IdentifierForVendor(IdentifierForVendor)

2019-07-22 03:33发布

NSString *identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

上面的代码给出了我的两个应用程序相同的电话在两个不同的标识符 - 不同的包ID而是两个应用程序的ID和两个开发配置配置文件在我的苹果帐户创建。

我怎么知道,如果球队ID是一样的,对供应商的标识应该是在这两个应用程序相同。 哪里错了吗? 我不明白?

Answer 1:

我现在正在争取同样的问题。 “答案”是identifierForVendor每其预期设计打破了苹果文档中:

束ID被假定为在反向DNS格式,并且第一两种组分被用于产生一个供应商ID。 例如,com.example.app1和com.example.app2似乎具有相同的供应商ID。

什么的现实情况是,identifierForVendor仅适用于采用同样的配置轮廓和签名证书的应用程序相同。 作为一个例子,我有我的企业环境中的多个应用程序,所有这些都是com.mycompany ..

identifierForVendor是使用bundleID com.mycompany.app1应用相同。*和然而使用相同的签名证书,但不同的配置轮廓产生不同的identifierForVendor值其的provisioning profile com.mycompany.app2。

编辑:这只是发生在iOS7但在iOS6的正常工作。 我昨天测试了这一段时间,可在7整天重复的问题,但在6我得到预期的结果。

EDIT2:苹果已经转移identifierForVendor球门柱。 他们显然认定他们的算法问题,而不是固定的问题,已经改变了的iOS版本之间的标识符的功能与文档的变化。 更新的文档链接如下。 SMH。

identifierForVendor



Answer 2:

供应商不被球队ID确定,但有两种方法:

  • 通过在App Store提供的(如果从App Store下载的)数据
  • 束ID的部分(如果使用的任何其它装置展开)

这取决于该设备是否运行iOS 6或7+。

按照- [的UIDevice identifierForVendor]文档:

通常情况下,供应商通过由应用商店提供的数据来确定。 如果该应用不是从应用商店(如企业应用程序和应用程序仍在开发中)安装,则厂商标识符基于所述应用程序的包ID的计算方法。 束ID被假定为在反向DNS格式。

在iOS 6中,包ID的前两个分量用于生成供应商ID。 如果包ID仅具有单一组分,则使用整个包ID。

上IOS 7,除了最后一个组件束的所有部件都用来产生供应商ID。 如果包ID仅具有单一组分,则使用整个包ID。



Answer 3:

它的,因为你有2分不同的组合编号的。

一个供应商是由前两个点分隔的字段来标识。 所以com.a.app1和com.a.app2具有相同的供应商(com.a),但com.b.app3有不同的供应商(com.b)



文章来源: IdentifierForVendor
标签: iphone ios ios6