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

Update: Engineering has determined that this issue behaves as intended.

By kasper.muncken at Dec. 13, 2017, 12:40 p.m. (reply...)

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!