【问题标题】:iOS 7 access UUID value in an enterprise application (not for AppStore)iOS 7 在企业应用程序中访问 UUID 值(不适用于 AppStore)
【发布时间】:2014-03-19 18:37:50
【问题描述】:

Apple 自 iOS7 以来已弃用且无法使用 -uniqueIdentifier 属性。其他属性-identifierForVendor-advertisingIdentifier 有一个大问题,就是卸载重装后会改变值。
我需要该值来唯一标识连接到服务器的设备。
该应用将仅使用企业帐户在内部分发,因此审核过程没有问题。

有没有私有的获取方法?


[通过一些测试更新]
正如 David 所说,我在 iOS7.1 设备上使用了供应商标识符,这是我的一些测试结果。

  • 应用安装后:28FD42B6-A993-4602-A988-69E375A1F913
  • 杀掉应用后:28FD42B6-A993-4602-A988-69E375A1F913
  • 删除并重新安装应用程序后: 28FD42B6-A993-4602-A988-69E375A1F913
  • 系统还原并重新安装应用程序后: 4948F77F-3D41-4933-B2F0-C4DCB529C7CC
  • 从系统还原前的备份还原后: 28FD42B6-A993-4602-A988-69E375A1F913

【问题讨论】:

  • 查看更多文档,只要设备上安装了来自同一供应商的任何应用程序(基于应用程序 ID),UUID 就可以保证是一致的。如果没有最少的服务器登录,您想要的东西的可能性看起来并不好。

标签: ios ios7 uuid enterprise


【解决方案1】:

您应该能够将[UIDevice identifierForVendor] 用于您的目的。根据文档:

对于来自同一供应商并在同一设备上运行的应用,此属性的值是相同的。

基于此,我认为如果您删除并重新安装应用程序,该值不会改变。一些快速测试确认它在删除/安装周期中是持久的。

编辑:

看起来identifierForVendor 仅通过在 iOS 7 上的删除/安装来持久化,因此在 iOS 6 上使用 uniqueIdentifier,在 iOS 7 上使用 identifierForVendor:

@implementation UIDevice (persistentDeviceIdentifier)

-(NSString*)persistentDeviceIdentifier
{
    if([self respondsToSelector:@selector(uniqueIdentifier)])
        return [self performSelector:@selector(uniqueIdentifier)];
    else
        return [[self identifierForVendor] UUIDString];
}

@end

【讨论】:

  • 大卫非常感谢...我也会检查更新和系统还原期间
  • 用一些测试更新了问题
猜你喜欢
  • 1970-01-01
  • 2017-10-31
  • 2017-03-14
  • 2012-05-02
  • 2016-08-11
  • 2012-11-22
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
相关资源
最近更新 更多