I know that there's a setUserID method in Flurry, but how would I get the user ID that Flurry sets by default for a device?
Flurry uses SHA1 Mac for iOS and Android ID for Android apps as device identifiers. These are used solely for internal identification purpose, and are not disclosed to developers. You need to use setUserID method to assign a unique user ID for a user in your app. Please be sure not to use this method to pass any private or confidential information about the user.
(Full disclosure: I work at Flurry)
Related
I try to create on iOS an application like https://f-droid.org/packages/app.fedilab.nitterizeme/ on android to help a friend have the same feature (so it actually does not need to be an app per se)
i.e the user explicitly authorizes it to responds to twitter/youtube etc. links and redirect them to non-tracking frontend or app (nitter.net etc. )
However my understanding is that Apple requires the app to put a special file on the domain to prove ownership.
Is there a way to workaround that if the user gives his explicit consent ?
No, there is no workaround for that
My project have a case: one account user can only log on to one device ( if user log on to app in device A, user can't log on to app in device B). My Idea is: when user login, I'll get the imei Iphone (like android) and send it with request login to server. But I can't get imei. I try with UUID, but UUID will change when re install app. Keychain does not solve the problem. Please help me.
You have to use Keychain to store Unique Id , this will not change even if user delete app
You can use any wrapper Source code to do this
here is an example
https://github.com/Joe0708/KeychainUUID
At the beginning I'd like to mention that I do not know any method that directly answers your question, especially that Apple does not allow you to read IMEI and other similar stuff due to privacy concerns. This has been answered here.
The workaround might be as follows
Take a look at the UIDevice class, especially at the identifierForVendorProperty which provides you (according to documentation ) with a device specific value.
The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.
As far as i know some financial apps are secured this way to permit only one device to access the account. This however requires registering a device each time application is reinstalled.
Alternatively you can use UUID you generate within your app (first run) and then you assign it for the user online. It might take the form similar to two step verification process. Be aware however that with such restrictions user will have to be online all the time to use your app.
I would like to find out in my iOS app if the app was installed due to an ad campaign link.
Google Analytics is doing this and it is tracked on their analytics web page. iTunes Connect is doing this too and it is also tracked on the iTC web page.
I'm looking now for a way to get this information inside the app. When the app first starts i want to check if it was installed because the user was sent to the App Store by a campaign link and what campaign id it was.
Is there a way for an iOS app to ask Google Analytics, Firebase or iTC/StoreKit what campaign has led to its install?
Google Anlaytics uses IDFA of user's device as identifer after user installs the application, i.e. when user clicks on the ad, they are redirected to google analytics where they collect user's IDFA and redirects user to iTunes. Once user installs the application, they match the saved IDFA with user's IDFA and if they match they mark that user as attributed.
I looked at the Google Analytics docs, to find some info on callback that google may provide if there is a match, after user installs the application. Unfortunately, I could not find anything.
But the thing is, I don't think this method should work at all now after iOS 10. Apple provided users with Limit Ad Tracking from sometime now but on iOS 10, if a user has enabled it, the IDFA API returns a number like this: 00000000-0000-0000-0000-000000000000
You can imagine you cannot match user using IDFA now.
On the other hand, there are other ways to do fingerprint matching for iOS devices. It is not very accurate but it works most of the time.
I have used branch.io for deferred deeplinking and it worked. You can also look at the solution provided by them. They have a callback which you can implement and get to know from which link your app is getting installed.
It looks like Adjust can do this:
Adjust says it uses fingerprinting when IDFA is not available
https://docs.adjust.com/en/getting-started/#tracking-installs
According to https://docs.adjust.com/en/callbacks/#best-practice-accessing-adjust-attribution-data-externally
and
https://partners.adjust.com/placeholders/
the Adjust SDK seems to allow the app access to its data including campaign name for installs.
I will comment later if this really worked.
I got an answer from Adjust saying:
yes it is possible with the Adjust SDK to attribute installs to the
source which drove that install.
By setting up campaign parameter structure to the tracker URL, you can
actually find out the the Network Name, Campaign Name, Adgroup Name
and Creative Name.
For your reference here is the guide to setup campaign parameter
structures ->
https://docs.adjust.com/en/tracker-generation/#planning-your-tracker-structure
I'm trying to get the Device ID via Google Tag Manager but got an error on iOS. After a quick search it seems that Apple blocked this.
Moreover, it seems that using idfa is not recommended (can lead to troubles to validate the app) and sometimes lead to unexpected errors.
What are my options here ?
Get the device ID via code and somehow (I don't know hate btw) push it to the data layer to retrieve it later via GTM ?
Find another unique ID ?
What would you suggest ?
Apple has blocked developers of using any kind of unique device id, like uniqueIdentifier, mac address, etc...
As you noted using the IDFA for this might get you in trouble, you are only allowed to use this for advertisement purpose.
There is the identifierForVendor, this ID is shared between all app from one developers. This ID will not change wil the user has any app on his device from the same developer.
The last option is to create a unique ID yourself and store this in the keychain where only you app(s) can access it.
I all cases you will have to push the value into tag manager yourself.
I am working in project that allow user choose some contact to call even phone in silent mode .
is this available
There is no API supplied by Apple that will allow you to do this. Your is is sandboxed and can not interacte fully with others apps.
When people switch their iPhone to silence mode, only those who have been added to favorite list can call successufully.
The problem is that favorite list is belong to Phone app, it's inside the app's sandbox, private API used by Apple. Developer should not use these kind of API, we can only use public API