identifierForVendor 的供应商是什么

What is the vendor of identifierForVendor

我有一些 捆绑包 ID 具有相同前缀 的应用程序,例如 com.mycompany.app1com.mycompany.app2,尽管它们的 Apple Developer帐户不同

在开发的时候,我可以通过调用identifierForVendor得到相同的值。但是提交到App Store后就变得不一样了。

下面identifierForVendor section in Apple Documentation中描述的段落让我很困惑。

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 没有告诉我们 App Store 是如何确定供应商的,当应用程序已经在 App Store 上。

我收集了一些识别设备的方案。

IDFV

如问题中所写,IDFV 对于同一设备上来自同一供应商 运行 的应用程序是相同的。

一般情况下,供应商是根据App Store提供的数据来确定的。如果应用程序不是从应用程序商店安装的(例如企业应用程序和仍在开发中的应用程序),则根据应用程序的捆绑 ID 计算供应商标识符。

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

IDFA

与 IDFV 不同,相同的值返回给所有供应商。这个标识符可能会改变——例如,如果用户擦除设备。在iOS 10.0 及更高版本中,当用户限制广告跟踪时,advertisingIdentifier 的值全为零。

如果开发者试图在不投放广告的情况下获取 IDFA,应用可能会被拒绝。

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

钥匙串共享

来自同一团队 ID 的应用程序也是如此。

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

设备检查

来自同一个 Apple Developer 帐户的应用程序也是如此。可从 iOS 11.

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

OpenUDID

来自同一团队 ID 的应用程序也是如此。此方案已 弃用

参考: https://github.com/ylechelle/OpenUDID

FCUUID

来自同一团队 ID 的应用程序也是如此。

参考: https://github.com/fabiocaccamo/FCUUID