Is FlurryAgent.getPhoneId() unique for each customer? - android

I was tracking the user behavior using flurry in my android app.
I came across a function called FlurryAgent.getphoneId()
I had 2 questions:
1) Is this Id unique to every single phone? I am trying to make this the unique Id for each customer.
I have checked this id with 2 different devices and FlurryAgent.getphoneId() gives 2 different Ids. However, I am confused if those 2 ids are device Ids or unique user ids.
(I am afraid 2 Motorola Fire XT 530 may have the same FlurryAgent.getphoneId().)
2) After I clear app data this phoneId doesn't seem to be changed.
Where is this phoneId stored?
I have checked their website but no documentation on getphoneId is available. Please help.

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 in the Support team at Flurry)

Related

Is it okay to use Google Cloud Messaging's Instance ID (now deprecated) for app tracking purposes?

I am currently using android's device id (ANDROID_ID) as a unique identifier for my own analytics API in my app. I have recently heard that Google under Android 10 (Q), Android will have tighter restrictions in using unique identifiers as stated in https://developer.android.com/training/articles/user-data-ids
Android 10 (API level 29) adds restrictions for non-resettable identifiers, which include both IMEI and serial number. Your app must be a device or profile owner app, have special carrier permissions, or have the READ_PRIVILEGED_PHONE_STATE privileged permission in order to access these identifiers.
So i went on to use Google Cloud Messaging's Instance ID as a replacement (with GCM dependencies). But then again I saw that the library was deprecated so it got me thinking that the GCM API might be discontinued in the near future.
Is it still okay to use GCM's Instance ID? Note that I want to use it only for getting a device's unique ID.
If there are any suggestions to another unique ID that I can use, here are my notes:
Less or no dependencies if possible
Its okay if the unique ID is refreshed on app uninstall / device factory reset as long as it is globally unique on refresh
Does not hinder or bother device security
Easy to setup if possible, if not, must be reusable code
Minimal (One in a billion chance) or no chance of duplication
I am aware of Java's UUID, but I am still researching its feasibility
Thank you very much in advance!
EDIT (as of Feb 11, 2020)
Since generating a unique ID is a very tricky subject, I resorted to using Google's own Firebase API. They take care of the unique ID's (provided that your device has Google Play.
To those who want an independent unique ID per device, just stick to the API handling/throwing the unique ID.
Generating a random 128-bit or longer ID using a cryptographic RNG (such as java.security.SecureRandom) is enough for your purposes.
Even for 122-bit IDs (including those found in random UUIDs), the expected chance of a collision is 50% only after generating about 2.7 billion billion values (see "Birthday problem").
See also "Best practices for unique identifiers", in the Android Developers site, and my section "Unique Random Identifiers".
Since generating a unique ID is a very tricky subject, I resorted to using Google's own Firebase API. They take care of the unique ID's (provided that your device has Google Play.
To those who want an independent unique ID per device, just stick to the API handling/throwing the unique ID.

Get Permanent Unique ID for android device

I have an application in which I want to identify the device with Unique ID,
I have tried multiple solutions but doing after phone reset unique ID gets changed(like ANDROID_ID)
I have used below StackOverflow links which are not usable now.
Is there a unique Android device ID?,
How to get unique device numer in Android?,
Get Unique ID of Android Device?,
How to get unique device hardware id in Android?,
Get unique device ID in android
Android Q has restricted access for IMEI and serial number. It is available only for platforms and apps with special carrier permission. Also, permission READ_PRIVILEGED_PHONE_STATE is not available for non-platform apps.
Many people may mark this as duplicate but please note that
I am looking for a unique id that will last for a device. (which will not change even after resetting/formating the device)
It's not possible in latest Android versions by design to prevent apps from tracking devices due to privacy reasons. Especially if you want to track after a device factory reset as mentioned.
See Best Practices Guide
Recommendation is to use Advertising ID and not associate it with any hardware identifiers. You may identify the user account, but not the device itself. This allows the user to change the user account if they deem necessary or uninstall/reinstall the app at worst.
Play Store policy notes
Association with personally-identifiable information or other identifiers. The advertising identifier must not be connected to personally-identifiable information or associated with any persistent device identifier (for example: SSID, MAC address, IMEI, etc.) without explicit consent of the user.
Now, you may track a device as long as
you don't distribute your app via the play store (i.e sideloading, but you do risk getting booted if Play Protect on device may notice you. I can't remember the default setting, but if the device has play services, it may scan sideloaded apps and remove them if it finds malicious behavior.)
Use hardware identifiers on older versions of Android, (still subject to Play Protect, and also Play Store if you distribute through there) or force users to use a custom ROM

Which ID I should use in the new GDPR API of Flurry on Android?

Flurry is offering a new GDPR API since 25th of April. This version provides the user with the right for Objection. To exercise the right within a mobile app the flurry-API-method asks for an ID of several kinds to identify the device.
We implemented the flurry SDK on Android in the way described at https://developer.yahoo.com/flurry/docs/integrateflurry/android/
This description does not say anything about the ID which is used by the SDK on Android to identify the device when tracking it for Analytics. But somehow I would need to know which kind of ID is used by the SDK to actually use exactly the same kind of ID with the GDPR-API of Flurry.
So which kind of ID is the one to use when exercising the right of Objection for a user/device on Android when SDK is implemented as described?
The API takes either the GAID or AndroidId. There is not a specific way to determine ahead of time which is linked to a user. You could either make two requests, one with each type, or make a single request with both. Each request can only have a single ID of a given type, but a request can include more than one type.

Adobe Flash App -- Unique Device ID

I'm developing an application using Adobe Flash (AS3) which runs mainly on tablets.
I would like users to pay. So they have to activate their application.
To do this I thought about providing an activation Code that is built using a univoque Device Identifier (UDID)
So, the customer provides me his UDID and I return the activation code which works only on his device.
My problem is (I searched everywhere)... how can I obtain an UDID using AS3?
Or also, do you suggest a different approch to reach my goal?
Thank you very much!
Daniele
There is no single correct solution to what you are asking , It depends entirely on your needs and kind of app you are publishing.
createUID() function in mx.utils package Generates a UID (unique
identifier) based on ActionScript's pseudo-random number generator and
the current time.
But that may not help you as this ID is not machine dependent , user can simply publish his UID and your authentication key . User may need to install the app in other of his devices, user may accidentally delete the file which will delete the originally generated UID too.
A 64-bit number (as a hex string) is randomly generated when the user first sets up the device and remains constant for the lifetime of the user's device. The value may change if a factory reset is performed on the device.This is accessible using java by constant ANDROID_ID there is no library in ActionScript-3 to access this . But you can use this ane to get it.
Or You can use a sign in from facebook using this ane or google+ and use the customers unique id from there , but it would require him to give your app permissions to view some basic information.

What's the purpose of Android Development device id?

What's the purpose of Android Development device id, under Developer Options on ICS? I've googled and found nothing.
The device id is yet another manner that your apps can be linked to your phone. Most apps are linked to your account, but some, particularly those that you could not pay for via market, used device id so that you could not buy an app and then install it on several devices.
It used to be hidden only, and maybe after the final is out, it will be hidden again.
for more information -
http://androidforums.com/motorola-droid-bionic/584694-ics-development-device-id.html
May be this will help you......
Every device has an android device ID, the only (user) way to reset this ID is to use android's reset to factory defaults options - so this ID should remain constant unless a phone is sold/transfers ownership etc. The ID should be unique across all devices across all time.
These properties make it a very useful thing to store licences/security against.

Categories

Resources