UIDevice's identifierForVendor changes when restoring device from an iCloud backup
Originator: | kasper.muncken | ||
Number: | rdar://35746735 | Date Originated: | 11.29.2017 |
Status: | Resolved: | ||
Product: | iOS | Product Version: | 11.1 |
Classification: | Serious bug | Reproducible: | Always |
Summary: UIDevice's identifierForVendor remains unchanged while running our app on the same device. It changes when switching between TestFlight distributed builds and App Store builds as expected. However, we have detected two situations where the identifier changes for reasons that are nowhere to find in the documentation. I.e. the identifier changes when: 1) A device is restored from a backup from another device 2) A device is restored from a backup from that same device This has serious consequences if you rely on identifierForVendor in any way. We have detected more than 400 users being locked out of our app without warning because of this. Steps to Reproduce: 1) Install app that prints UIDevice.current.identifierForVendor on device A 2) Run app and store identifier 3) Backup the device to iCloud (while the app remains installed on the device) 4) Restore (I press and hold home button + power button until restore screen appears, then restore to factory settings) 5) Follow restore guide and restore from the backup just performed from same device 6) Run app again and note that the value of UIDevice.current.identifierForVendor has changed Follow same procedure but restore from an iCloud backup from another device to produce the other scenario. Expected Results: The value of UIDevice.current.identifierForVendor remains unchanged. Actual Results: The value of UIDevice.current.identifierForVendor changes. Version/Build: App built with Xcode 9.1 9B55 with minimum deployment target of iOS 10.
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!
Update: Engineering has determined that this issue behaves as intended.