Apple建议使用[UIDevice currentDevice].identifierForVendor.每次在iOS模拟器中运行应用程序时,其值都会发生变化。我的应用程序中的初始功能要求我将设备识别为一种轻型身份验证形式。这使得开发变得冗长乏味,理想情况下,我可以在调试/运行会话中持久化一个唯一的值。是否有实现这一目标的建议?
sulc1iza1#
在模拟器中构建和运行时,该值将更改,这一点已被清楚地记录在案。在真实的设备上,只有当用户从其设备中删除所有应用并重新安装应用时,它才会发生变化。如果您希望模拟器应用在开发过程中使用一致的标识符,则可以定义该UUID并仅将其用于模拟器构建:
NSUUID *devId; #if TARGET_IPHONE_SIMULATOR devId = [NSUUID initWithUUIDString:@"SOME-STATIC-UUID-STRING"]; #else devId = [UIDevice currentDevice].identifierForVendor; #endif
请注意,您需要将SOME-STATIC-UUID-STRING替换为真实的的UUID字符串。
41zrol4v2#
截至2023年5月8日
identifierForVendor
对于来自同一供应商、在同一设备上运行的应用,此属性的值相同。对于同一设备上来自不同供应商的应用,以及不同设备上的应用(无论供应商如何),将返回不同的值。Reference我的猜测是,每次我们杀死模拟器并重新开始时,我们都会得到一个新的“电话”,所以一个新的设备ID。
2条答案
按热度按时间sulc1iza1#
在模拟器中构建和运行时,该值将更改,这一点已被清楚地记录在案。在真实的设备上,只有当用户从其设备中删除所有应用并重新安装应用时,它才会发生变化。
如果您希望模拟器应用在开发过程中使用一致的标识符,则可以定义该UUID并仅将其用于模拟器构建:
请注意,您需要将SOME-STATIC-UUID-STRING替换为真实的的UUID字符串。
41zrol4v2#
截至2023年5月8日
identifierForVendor
对于来自同一供应商、在同一设备上运行的应用,此属性的值相同。对于同一设备上来自不同供应商的应用,以及不同设备上的应用(无论供应商如何),将返回不同的值。
Reference
我的猜测是,每次我们杀死模拟器并重新开始时,我们都会得到一个新的“电话”,所以一个新的设备ID。