Uniquely identify an iOS device.

How to uniquely identify an iOS device? I need the unique identifier for the purpose of logging to achieve tracing back the device based on the data sent. So i need to programatically generate a code that helps me know the exact device which generated the log. Thanks in advance.

Post not yet marked as solved Up vote post of ashishhasija Down vote post of ashishhasija
34k views

Replies

iOS puts serious restrictions on unique persistent identifiers because of privacy concerns. There are several WWDC sessions that discuss this and I strongly encourage you to watch them:

Given the above there’s no single value that uniquely identifies an iOS device, now and forever, across unrelated apps. Rather, there’s a suite of options available to you, and which one you use depends on your requirements. My recommendation is that you review the above and, if the way forward isn’t clear, post back with more details about your specific requirements.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Hi Thanks for the reply. From the links WWDC videos, I could figure that we have 3 identifiers, provided by Apple viz UUID, VendorID and Advertising ID. After capturing these identifiers and logging them, individually, these identifiers don't solve the issue I am facing regarding i.e., using the identifying to back trace the device, as these identifiers can change. UUID -> changes when the application relaunches. VendorID -> changes when user deletes and reinstalls the application. Can you help me think for a solution where I can either extract the MAC Address or IMEI number(which seems like a non feasible option) or use a combination of these identifiers to achieve the objective i.e. to uniquely identify the device? Thanks in advance.

Are you working in a managed environment? Or building an app that’s distributed to general App Store customers?

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Hi eskimo,

I'm working on app that has the same requirements, a device unique ID, to fingerprinting the device for the purpose (in our case) of establishing a relation between a specific instance of our app and the device were it's running. We have been looking at apple MDM protocol as solution, given that I've seen that using MDM commands we can query the device and then push a data dicionary containing the information to the device that the app que also access. We are also interested in the capability for example to remote wipe the app and data from the device in case of stollen of lost device, etc.

This will be a free app that should be available to the general public free but should run as managed device/app.

My question is, can we deploy a app to the general public (this will be a free app ) and still make use of the the MDM infracture provide by Apple.

What would be required to achive this (Entreprise developer account , VPP , ...) ? What would be the deployment model ?


Thanks

I am working on an enterprise app to be distributed via MDM to a fixed group of users.

ashishhasija wrote:

I am working on an enterprise app to be distributed via MDM to a fixed group of users.

MDM allows you to get lots of unique information about the device via the MDM protocol itself (including the UDID, the serial number and the IMEI). If you need to correlate that to request made by your app, use MDM to push a unique ID to your app via managed app preferences and then have your app include that unique ID in its requests.

ptraca wrote:

My question is, can we deploy a app to the general public (this will be a free app) and still make use of the the MDM infracture provide by Apple.

I’m not the right person to answer MDM policy questions. I recommend you (and your lawyers) review the relevant licensing agreements.

On a personal note, I found the definition of MDM Customer in the Apple Developer Enterprise Program License Agreement to be particularly entertaining.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

We have similar functionality where we need to identify the uniqueness of device. We were previosuly doing it by storing identifier in keychain.

With keychain getting auto deleted on app uninstall from 10.3 this would no longer hold good.


Can we use Advertising ID for the same,we already use it for serving ads.

Can we use Advertising ID for the same …

That’s a policy question rather than a technical question, and I’m not in a position to give rulings on policy. I recommend that you read the relevant policy documents (App Review’s guidelines and the programme licence agreement) and base your decision on that.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"