UIDevice currentDevice identifierForVendor - 这可以改变 iPad
UIDevice currentDevice identifierForVendor - can this change on an iPad
我的应用程序使用 UIDevice currentDevice identifierForVendor
来帮助我识别设备。最近遇到一个看不懂的情况。我的一位客户的 UIDevice currentDevice identifierForVendor
和 iPad 似乎发生了变化。这有可能吗?
当用户从设备上删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。当使用 Xcode 安装测试版本或使用临时分发在设备上安装应用程序时,该值也可能发生变化。因此,如果您的应用程序将此 属性 的值存储在任何地方,您应该优雅地处理标识符更改的情况。
您可以使用 KeyChain 存储一些独特的东西作为 UUID(通过您自己的方法创建或使用 API). This 可能对您有所帮助。
UIDevice currentDevice
只是 returns 当前 运行 设备的信息。其中有几个属性可以检查。我假设您正在检查 [UIDevice currentDevice] identifierForVendor]
如果是这样,是的,它可以改变。如果用户删除了您的应用程序以及您(应用程序供应商)创建的所有其他应用程序,那么 identifierForVendor
可能会发生变化。它可以更改的另一种情况是,如果它不是从 App Store 安装的,后来又安装了。例如,您为您的客户提供一个临时构建以进行测试,然后他们从 App Store 安装真正的应用程序。
[UIDevice currentDevice] 不是标识符。它是 class 的一个实例。我假设您指的是 identifierForVendor,它是唯一的但不是固定的。
该文档对于理解它以及提供替代方案非常有帮助。未列出的是用于推送通知的设备令牌,但这是一个完全不同的包,您很多人都不想进入。
据文档显示,5 月底左右出现了一个错误,导致用户在 App Store 中更新应用后 identifierForVendor
变为 return 新标识符它应该 return 相同的标识符。请参阅 these and these Apple 开发者论坛帖子。我也看到过这种情况,它影响了我大约 20% 的用户。
我在搜索 "almost" consistently/fixed ID 的唯一固定 ID 时发现的另一个解决方案是使用广告标识符。你可以检查ASIdentifierManager。要访问 ID,您只需要:
@import AdSupport
...
NSString *id = [[ASIdentifierManager sharedManager] advertisingIdentifier];
如果设备重置了他的设置或重置了他的广告标识符,这个 ID 将被重置。
目前我坚持使用
创建新的 UUID
NSString *UUID = [[NSUUID UUID] UUIDString];
并将其存储在某处。
我的应用程序使用 UIDevice currentDevice identifierForVendor
来帮助我识别设备。最近遇到一个看不懂的情况。我的一位客户的 UIDevice currentDevice identifierForVendor
和 iPad 似乎发生了变化。这有可能吗?
当用户从设备上删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。当使用 Xcode 安装测试版本或使用临时分发在设备上安装应用程序时,该值也可能发生变化。因此,如果您的应用程序将此 属性 的值存储在任何地方,您应该优雅地处理标识符更改的情况。
您可以使用 KeyChain 存储一些独特的东西作为 UUID(通过您自己的方法创建或使用 API). This 可能对您有所帮助。
UIDevice currentDevice
只是 returns 当前 运行 设备的信息。其中有几个属性可以检查。我假设您正在检查 [UIDevice currentDevice] identifierForVendor]
如果是这样,是的,它可以改变。如果用户删除了您的应用程序以及您(应用程序供应商)创建的所有其他应用程序,那么 identifierForVendor
可能会发生变化。它可以更改的另一种情况是,如果它不是从 App Store 安装的,后来又安装了。例如,您为您的客户提供一个临时构建以进行测试,然后他们从 App Store 安装真正的应用程序。
[UIDevice currentDevice] 不是标识符。它是 class 的一个实例。我假设您指的是 identifierForVendor,它是唯一的但不是固定的。
该文档对于理解它以及提供替代方案非常有帮助。未列出的是用于推送通知的设备令牌,但这是一个完全不同的包,您很多人都不想进入。
据文档显示,5 月底左右出现了一个错误,导致用户在 App Store 中更新应用后 identifierForVendor
变为 return 新标识符它应该 return 相同的标识符。请参阅 these and these Apple 开发者论坛帖子。我也看到过这种情况,它影响了我大约 20% 的用户。
我在搜索 "almost" consistently/fixed ID 的唯一固定 ID 时发现的另一个解决方案是使用广告标识符。你可以检查ASIdentifierManager。要访问 ID,您只需要:
@import AdSupport
...
NSString *id = [[ASIdentifierManager sharedManager] advertisingIdentifier];
如果设备重置了他的设置或重置了他的广告标识符,这个 ID 将被重置。
目前我坚持使用
创建新的 UUIDNSString *UUID = [[NSUUID UUID] UUIDString];
并将其存储在某处。