Search code examples
iosios5ios6testflightudid

Openudid value not persisting


I have an app that syncs data between devices. Its critical that we know the device that the user is using at all times so we can sync properly. we have implemented OpenUDID but are noticing some odd issues in some of the test users getting new openUDID's when they are installing and running a new version.

Some of the test team is on ios5 and some ios6 and we are trying to narrow down the conditions that cause a new openUDID to be generated.

Out loud thinking - could it be any of these scenarios. On install of a new app (version of our app) would ios5 or 6 make a diff here? Using testflight for it to install the new version for us. does that flow cause a new oUDID Other apps on the phone while we update the version? Hard reboots of the phone (Power + home) for 15 seconds App crash, uninstall then reinstall

Any help in advance would be awesome!


Solution

  • OpenUDID uses the UIPasteboard method to store a unique value but there are some limitations. It should not reset when the phone is powered off and restarted but I would think there is a good chance the install of iOS6 resets the pasteboard storage.

    If you are able to find a user who consistently does not have the same value even when they are not updating to a new OS version there could be the unlikely situation where another app is messing with the value or if iOS6 is more likely to reset or expire the UIPasteboard. You could consider making your own code to save to the pasteboard. The benefit of OpenUDID is that other networks can share the same ID for cross app tracking so if you don't plan on using it for that purpose you may consider implementing your own solution. I assume it isn't possible to target iOS6 only but if you could then you could use their new Organization Unique Identifier which would probably be far more reliable.