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 拒绝 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用uniqueidentifier创建多选参数?

iOS-获取Model(设备型号)Version(设备版本)app(程序版本)等

使用 SQL Server 的 uniqueidentifier 字段类型

uniqueIdentifier 与 indentifierForVendor 和 Apple 拒绝

如果用户重置他的苹果设备,uniqueIdentifier 是不是保持不变?

如何检测是不是有任何外部库正在调用 [UIDevice currentDevice] uniqueIdentifier]?