I have a mobile app and I use firebase and BigQuery to download data for analysis. Recently the 'user_pseudo_id' has been changing when 'app_remove' event is triggered. When I emailed firebase, they replied that 'user_pseudo_id' changes when app cache is cleared.
We rely on 'user_pseudo_id' to calculate app removes in new users (daily). Can you suggest a solution to this problem?
We cannot use the 'user_id' as it will not be triggered for 'first_open' event using which we find daily new users.
For Apps, user_pseudo_id is the app_instance_id. The app_instance_id is updated with each app install. This means, when an App is removed/uninstalled from a device, the app_remove is the final event for an app_instance_id. If an app is reinstalled on a device, that 'app instance' will have a new app_instance_id i.e. a new user_pseudo_id. This is working as intended, has always been this way, and is not a recent change.
For your use case, you need to fully articulate: "We rely on 'user_pseudo_id' to calculate app removes in new users (daily).". e.g. How are you defining new users?
Since you do not want to use user_id, the only way for you to define new users is by using user_pseudo_ids.
If you want to calculate new users who are uninstalling the app in their first session, you can write a query for that.
Related
I am a bit dumbfounded on how to achieve this properly. So you have an app that is getting regularly updated, and you show those new updates to the user (something like discord update popup and whats new and such). How do you handle whether or not the user has seen it? A more high level question that "local storage", I am well aware of that or storing it in a DB, but this doesn't seem 1) Scalable, 2) Easy to work with in the long run. Are there any JS libraries that can simplify the process, eg or do I have to manually track each update? If there are more updates or the user hasn't logged in a while
I hope I conveyed what I am working on properly. Would love to hear how it's usually done.
Q: have an app that is getting regularly updated, and you show those new updates to the user
A: Service Worker can help you .That support reacting to push message .And they provide the Push API gives web applications the ability to receive messages pushed to them from a server, whether or not the web app is in the foreground, or even currently loaded, on a user agent.
More detail about start up a service worker to send users a message . https://developer.mozilla.org/en-US/docs/Web/API/Push_API .
Finally I suggest you try Workbox , that is a library that bakes in a set of best practices when working with service workers.
I am currently building a Flutter App for both iOS and Android and the purpose of the app is to collect data from user via lots of forms and then submit it to a backend endpoint.
I need to consider number of things:
User completes half of the form(s) and wants to save locally but submit it later
User submits the form but gets network error so data should not be lost
user submits successfully. at this point data should be either deleted from local storage or be kept and later should get sync with backend db.
Technical points
I may need to use local db. What's the best approach for it?
Maintain global state until data is either stored or sent
I would like to reach out to stack overflow community where collegues may have run into similar situation and can give me some ideas/hints on how best I can architect the app. And What are the libraries / pub packages I can use.
I need to use Flutter only.
for storing the to be submitted data you might be looking for the shared preferences plugin. this lets you store data locally on the phone and lets you edit and delete this when the sync has been completed.
I'm working on an AngularJS 1.6 web application.
There are a number of AngularJS services in the web application. I'm beginning to implement features that use the services to persist state between views.
However, this is becoming problematic when the user logs off and another user logs on. When the new user logs on, the services persist state from the previously user. I know that I can theoretically write code to put the application in a specific state when a user logs in, but it seems to me like it would be easier to simply dispose the stateful services and instantiate new ones when a new user logs on.
Is there an expedient way to do this?
The expedient way to do this would be when a user logs out, do a hard refresh and send them to the login page. This should wipe data that is stored in memory across the whole application.
If you dont want to perform a hard refresh, you're just going to have to clear out the data manually for each service, which depending on the amount, could be a fair bit of work and most definitely not expedient.
I seem to have 2 separate applications on GAE, the original one with the fictitious name xyz and an hrd one with the name xyz-hrd. I only want one with the name xyz but I want it to use the high resolution datastore. I am trying to use the instructions here.
I am near the end of the HRD migration stage on xyz and have clicked on "Activate Read-only". In step 11 the instructions say the following.
You will be notified when the migration tool is ready to alias the application (by email if you chose that, or by a message when your refresh the browser window). Click Finish Migration to complete the migration. At this point, the new HRD application begins serving incoming requests.
When I launch xyz at appspot.com, there are no changes.
When I launch xyz-hrd at appspot.com, there are changes, but only new data items.
Do I click on "Finish Migration" or not, and when I do, how will I get all the changes and all of the data items under the application name xyz? I am very nervous about this because the instructions say there is not way to revert after clicking on "Finish Migration".
By the way, in my "dashboard" I can select from among my applications which lists both xyz and xyz-hrd. When I select xyz I (still) see 2 warnings, but no warnings are present when I select xyz-hrd. Below are the 2 warnings.
A version of this application is using the Python 2.5 runtime, which is deprecated!
This application is using the Master/Slave datastore which is deprecated!
There is no way to reclaim the old app url for the new one. I know, its lame.
To avoid that in the future, map the appspot to a google apps domain so it has a fixed url.
For now, at most you can upload a new version to the old app which redirects to the new one.
Before migration you are supposed to stop using the old one by making it readonly. Otherwise changes there wont migrate.
Let's assume that you are working at the first version of a new Django application and you are keep adding changing the models.
Being a data-driven application you are mostly working to customize django admin.
In this case syncdb is not too useful because it will fail to update models. South was interesting but it does not make too much sense when you are working at the first version.
Deleting database and reinitializing it require several commands and also you manually entering the new admin account.
How do you propose to set your development environment so you can:
auto-restart django server when files changed
auto-reinitialize database when django is restarted
As a result, I expect to be able to add a new attribute to a model, switch to the browser and refresh the admin page and see the new attribute.
Providing initial data for models
It’s sometimes useful to pre-populate your database with hard-coded data when you’re first setting up an app. There’s a couple of ways you can have Django automatically create this data: you can provide initial data via fixtures, or you can provide initial data as SQL.
In general, using a fixture is a cleaner method since it’s database-agnostic, but initial SQL is also quite a bit more flexible.
http://docs.djangoproject.com/en/dev/howto/initial-data/