iosuuidudid

What is the vendor of identifierForVendor


I have some Apps whose bundle IDs have same prefix, such as, com.mycompany.app1 and com.mycompany.app2, though their Apple Developer accounts are different.

When in development, I can get the same value by calling identifierForVendor. But it becomes different from each other when they are submitted on App Store.

The paragraph below described in identifierForVendor section in Apple Documentation confused me.

Normally, the vendor is determined by data provided by the App Store. If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID. The bundle ID is assumed to be in reverse-DNS format.

Apple doesn't tell us how the App Store determines the vendor, when Apps have been on the App Store.


Solution

  • I have collected some schemes to identity a device.

    IDFV

    Like written in the question, IDFV is the same for apps that come from the same vendor running on the same device.

    Normally, the vendor is determined by data provided by the App Store. If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID.

    Reference: https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor?language=objc

    IDFA

    Unlike IDFV, the same value is returned to all vendors. This identifier may change—for example, if the user erases the device. In iOS 10.0 and later, the value of advertisingIdentifier is all zeroes when the user has limited ad tracking.

    An app may be rejected if the developer attempt to get IDFA without serving advertisements.

    Reference: https://developer.apple.com/documentation/adsupport/asidentifiermanager/1614151-advertisingidentifier?language=objc

    Keychain Sharing

    Same for apps that come from the same team ID.

    Reference: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps?language=objc

    DeviceCheck

    Same for apps that come from the same Apple Developer account. Available from iOS 11.

    Reference: https://developer.apple.com/documentation/devicecheck?language=objc

    OpenUDID

    Same for apps that come from the same team ID. This scheme is deprecated.

    Reference: https://github.com/ylechelle/OpenUDID

    FCUUID

    Same for apps that come from the same team ID.

    Reference: https://github.com/fabiocaccamo/FCUUID