UniqueIdentifier 现在导致 Apple 拒绝 [重复]
Posted
技术标签:
【中文标题】UniqueIdentifier 现在导致 Apple 拒绝 [重复]【英文标题】:UniqueIdentifier now causing rejections from Apple [duplicate] 【发布时间】:2013-05-17 06:19:37 【问题描述】:请不要将此标记为重复。这个问题是关于 Simperium 以及它处理 uniqueIdentifier 和 identifierForVendor 的方式。
Simperium 仍在使用
[[UIDevice currentDevice] uniqueIdentifier]
在 Simperium.m.这已被弃用,Apple 现在完全拒绝使用该调用的应用程序。
我正在尝试
[[[UIDevice] currentDevice] identifierForVendor] UUIDString];
但我不确定这样做会不会有任何问题。
你说什么?
最好的,
【问题讨论】:
同意:重复。由于我无法发布答案,因此从 Simperium 的角度来看,这种方法会很好。在开发分支中也应用了替代修复(您可以查看此问题以供参考:github.com/Simperium/simperium-ios/issues/60)。 【参考方案1】:根据 Apple 文档,identifierForVendor 可以在 iOS 6.0 及更高版本中使用,因此使用identifierForVendor
没有问题
【讨论】:
【参考方案2】:它应该可以工作。因为他们说
“虽然您可能已经从您的应用程序中删除了对 UDID 的访问和使用, 无效的二进制消息表明您的应用使用或访问 UDID。请检查您的源代码是否出现 "uniqueIdentifier" 方法;这是返回设备的方法 UDID。”
所以只需要使用“uniqueIdentifier”方法即可。
谢谢
【讨论】:
【参考方案3】:您也可以使用此方法为您的应用获取唯一标识符。
- (NSString *)createUUID
NSString *uIdentifier = [[NSUserDefaults standardUserDefaults] objectForKey:@"Unique identifier for test"];
if (!uIdentifier)
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
uIdentifier = [NSString stringWithString:(NSString *)CFBridgingRelease(uuidStringRef)];
[[NSUserDefaults standardUserDefaults] setObject:uIdentifier forKey:@"Unique identifier for test"];
[[NSUserDefaults standardUserDefaults] synchronize];
return uIdentifier;
【讨论】:
以上是关于UniqueIdentifier 现在导致 Apple 拒绝 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
iOS-获取Model(设备型号)Version(设备版本)app(程序版本)等
使用 SQL Server 的 uniqueidentifier 字段类型
uniqueIdentifier 与 indentifierForVendor 和 Apple 拒绝
如果用户重置他的苹果设备,uniqueIdentifier 是不是保持不变?
如何检测是不是有任何外部库正在调用 [UIDevice currentDevice] uniqueIdentifier]?