Google Analytics iOS: how does it track users? - ios

I am using Google Analytics in an iOS app, without IDFA enabled and without the User ID feature.
The analytics reports refer to new vs returning users, and of course shows other data based on the user's behavior in the app.
My question: How does GA track a user that terminates the app and restarts it? I understand it can't be using UDID to connect the two app sessions, per Apple limitations.
I am trying to understand whether a user that terminates the app and restarts it, or uninstalls the app and re-installs it, will appear in GA as one user or multiple.
Note: I don't need to know anything about the user identity, just their usage of the app.

Google Analytics creates unique cid (client id) the first time the app runs. Active/returning users report is based on the number of distinct cid value Google Analytics receives from the app. Uninstalling and reinstalling the app for example will generate new client id and it will appear in the report as new user. IDFA is not required for active users report although if provided it allows for demographic reports.

Usually those kind of framework create their own udid, and save it into the keychain. Data saved in the keychain persist even after app uninstall, but not after a device restore.

Related

Avoiding a user registration system but need in app purchases and data synced

I am having trouble understanding the theory of in-app purchases and have got to the point where I read so much I have confused myself.
I have an application where I don't require the user to register however I do store data on a server and track this using the UUID. My application scrapes a hi-score system for an online game and the user has to input which players on the online game they wish to keep track of. This information is then sent to my server which scrapes the data every 24 hours by default. Here is an example of the database on my server.
Devices Table:
uuid,
scrape_interval
Players being tracked table:
uuid,
player_name
Tracking information table:
player_name,
track_data,
tracked_on
I want to include an in-app purchase which once purchased will mean that data is scraped every 12 hours instead of every 24 hours, the way I plan to do this is by updating the devices table and set the scrape_interval to 12 hours where uuid = uuid that made the purchase.
However how will this work for users that have multiple IOS devices, how do I ensure the list of players they are tracking is kept sync across devices? I have read about using an iCloud ID which is apparently a unique identifier but does this mean I will have to do a check on the launch of my app to ensure the user is logged into an iCloud account and force them to login if they aren't? This doesn't seem very user-friendly but nor does implementing a custom registration and login system.
Am I over thinking? Is there a simple solution?
In app purchases can be restored across multiple devices associated with a single itunes account. So a single purchase may actually exist on 5 devices, and you can not tell which is which.
The IAP will provide no device specific id. Your only option is to generate a unique installation id and sync all installation ids that have the paid status.

Is it possible to obtain an unique iCloud user ID on cocoa?

My iOS app is currently on beta in TestFlight, and as a way to retribute to the nice people who helped me test it I would like to offer them some goodies such as, for instance, the full final version of the app for free.
For this, I was thinking of sending them a last beta version which would, automatically and upon execution, store some kind of ID from the logged in user into a VIP list I would keep online and then every next version of the app would check for their ID in order to verify if the user is a VIP user and unlock all the premium features.
Is it possible to obtain in the Cocoa apis a unique identifier that is associated to the user (as opposed to the device unique identifier)? I want this because I want to recognise the user in whatever device he installs it. I would like to avoid having to make my beta testers manually register as VIPs.
Thanks!
Yes, this is possible using CloudKit. You'll need a CKContainer, and you'll ask it to fetch the user record ID. That record ID is unique for your apps, but is also stable for that user this means the same iCloud account will have the same record ID, regardless of which device they're running on or which of your apps they're using.
If you turn on the CloudKit capability for your project, Xcode will automatically create the iCloud container for you, and you can then access it using one of the two CKContainer constructors.

How to Delete All previously tracked data in Google Mobile iOS App Analytics without changing the tracking id

Iam using Google Analytics SDK for iOS v3.0.9 in my app and tracked all the data during my development. Now the app is yet to be submitted in "Apps Store", so i need to delete all the previous data and track only the data after my app is released.
I need to use the same Tracking ID and the account.
You cannot delete it. That is why it is important to setup a test profile to send data to while you implement/qa. need ref use this link
in my choice need to create the new GA account and submit to App Store

iCloud, iCloudKit, iOS 8, Apple id

As I understand it now can not get apple id in iOS 7.
iOS 8 has many edits to work with iCloud and adding iCloudKit. Will I be able to get Apple id from API and use it, for example, for registration in own server?
No, you cannot get the user's Apple ID.
What you can do with CloudKit is get an opaque user record ID. This object will be the same for the user for your app on all of their devices, but it will be different for other apps or other users. You can save that on your server and use it as something like a "log in with CloudKit" feature. This was described in the WWDC 2014 intro to CloudKit session. Basically, you use the fetchUserRecordIDWithCompletionHandler: method on CKContainer. But there's no way to link this to the Apple ID automatically-- you still need to ask the user if you want that.
Not that I am aware of. That's kind of "invading" the user's privacy because you'd be getting his Apple ID (which is an email) without his consent.
What I do, using Parse SDK, is to make the user log in anonimously at my Parse App, then save his automatically generated User ID in a iCloud Key-Value container. Whenever the user deletes the app and reinstalls it (or simply install in another device of his), my app knows that he has an username saved on iCloud and then uses that instead of creating a new user. This way, I get to keep track of my users without invading nobody's privacy.

New users vs Update user for iOS app

We had an app live on the Apple app store for several months and that app did not include Flurry analytics.
We have recently updated the app with a new version and also included Flurry analytics into the App.
The Flurry dashboard is reporting the "New users" correctly when compared to new users iTunes sales and trends report however, iTunes is also reporting several hundered "updates" of the app that have been downloaded - however these are not included in the "New user" count on Flurry.
This means that Flurry is only reporting actual new app downloads and not considering app updates as new users at all?
We are using the Appcelerator module of Flurry.
Please could you help me in understanding if we need to do anything special/extra while integrating flurry SDK into the app to ensure users who take updates of the app are also included in the new users count in Flurry.
A interesting fact.
Try create event with param with universal name (for see count of events in circle in Event Parameters), and send at once from each device.
Then you can take a count of all active users. But if user is reinstall the app, then him can send at secondly, what is bad.
Flurry can’t report updating users as “updating users” because it only just found out about them. As far as Flurry is concerned, all of your users are new, because it hasn’t seen any of them before. When you release a second version with Flurry you will get the correct metrics. (Except, of course, for the hopefully-small minority who are updating directly from your 1.0 release.)
Edit: I think I’ve completely misunderstood your question. I think your mismatch may be caused by the fact that Flurry can only report on users who have launched [the new version of] your app at least once, while iTunes Connect will report all of the new and updating users.

Resources