当 AdvertisingIdentifier 为 nil 时,我应该使用啥方法?
Posted
技术标签:
【中文标题】当 AdvertisingIdentifier 为 nil 时,我应该使用啥方法?【英文标题】:What approach should I use when advertisingIdentifier is nil?当 AdvertisingIdentifier 为 nil 时,我应该使用什么方法? 【发布时间】:2015-02-12 12:10:02 【问题描述】:根据苹果文档,有时[ASIdentifierManager sharedManager].advertisingIdentifier
方法会返回一个nil
值,而我的应用程序中确实需要这个值:
https://developer.apple.com/library/prerelease/ios/documentation/AdSupport/Reference/ASIdentifierManager_Ref/index.html#//apple_ref/occ/instp/ASIdentifierManager/advertisingIdentifier
如果该值为 nil,则等待并稍后再次获取该值。有时候是这样的, 例如,在设备重新启动之后但在用户之前 已解锁设备。
我应该等多久?在这种情况下我应该使用什么方法?也许继续尝试获取广告标识符,直到它可用?还是我应该告诉用户尝试重新启动应用程序?有什么想法吗?
谢谢。
【问题讨论】:
您使用的解决方案有什么更新吗?我不明白的是,在使用swift的时候,advertisingIdentifier类型不是可选的,这意味着该值永远不会为nil(我们甚至可以不测试它是否为nil!) 【参考方案1】:您应该手动创建 UUID 并将其保存在首选项中。
NSString *UUID = [[NSUserDefaults standardUserDefaults] objectForKey:kApplicationUUIDKey];
if (!UUID)
CFUUIDRef uuid = CFUUIDCreate(NULL);
UUID = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
[[NSUserDefaults standardUserDefaults] setObject:UUID forKey:kApplicationUUIDKey];
[[NSUserDefaults standardUserDefaults] synchronize];
【讨论】:
我不认为这对这个问题是一个好主意 - 这是由于用户偏好而导致广告 ID 不可用时的答案。 就我个人而言,我遇到了这个问题,我的应用程序崩溃了,因为 adsIdentifier 给出了 nil 值,所以我将使用: NSString *UUID = [[NSUUID UUID] UUIDString];【参考方案2】:当用户使用受保护的文件解锁手机并监听applicationProtectedDataDidBecomeAvailable时,您可以有效地收到通知
【讨论】:
以上是关于当 AdvertisingIdentifier 为 nil 时,我应该使用啥方法?的主要内容,如果未能解决你的问题,请参考以下文章