After much research, I have realized that with iOS 6, Apple introduced two new properties in the UIDevice family, similar in nature to the “deprecated” UDID. That’s right, Apple will no longer allow anyone to use the UDID. Even though the open source OpenUDID solution which was implemented by Corona is no longer supported - I get a Build error #5 in Corona now.
The two new similar options to use are:
-
system.getInfo(“identifierForVendor”) – this option is supported by Corona and is the only option for iOS determination for NON-ADVERTISING companies.
-
in thte ASIdentifierManager class, identifierForAdvertising is the best option - but misuse of it will likely cause relationship problems with Apple. Misuse is defined as using this identifier for reasons OTHER than ad tracking like using the ID to keep track scores, levels, and other app user behaviors - which is now greatly discouraged by Apple.
In summary, #1 is the best Corona option. From the time a developer’s app is first installed, the IdentifierForVendor will not change so long as that device always has at least one app installed by a given developer. If uninstalled however, and then reinstalled, a new identifierForVendor value will appear - nothing can be done to get around this without risking big problems with Apple, period the end.
I have just confirmed that system.getInfo(“deviceID”) through Corona operates in the same manner as Apple’s “identifierForVendor” as follows:
-
a new alpha-numeric value is created is created upon initial install
-
when an App is updated and a new version installed (without uninstalling the previous version), they successfully retain their original value
-
when an App is uninstalled and then a new version installed, a new alpha-numeric value is created for both
In summary, using system.getInfo(“deviceID”) as developed by Corona behaves in the same manner as Apple’s “identifierForVendor” and therfore, there is no need to use anything but “deviceID” for both Android and iOS Platforms.