It has just come to light that Apple have deprecated the UIDevice uniqueIdentifier property with iOS 5 and above. No alternative method or property appears to be available or forthcoming.
Many of our existing apps are tightly dependant on this property for uniquely identifying a particular device. Can anyone suggest any ideas how we might handle this problem going forward?
The suggestion from the documentation is...
Do not use the uniqueIdentifier property. To create a unique identifier specific to your app, you can call the CFUUIDCreate function to create a UUID, and write it to the defaults database using the NSUserDefaults class.
... however this value won't be the same if a user uninstalls and re-installs the app.
A UUID created by
CFUUIDCreate is unique if a user uninstalls and re-installs the app: you will get a new one each time.
But you might want it to be not unique, i. e. it should stay the same when the user uninstalls and re-installs the app. This requires a bit of effort, since the most reliable per-device-identifier seems to be the MAC address. You could query the MAC and use that as UUID.
Edit: One needs to always query the MAC of the same interface, of course. I guess the best bet is with
en0. The MAC is always present, even if the interface has no IP/is down.