我已经实现了这个方法来获取 advertisingIdentifier
和 identifierForVendor
:
- (NSString *) advertisingIdentifier
{
if (!NSClassFromString(@"ASIdentifierManager")) {
return [OpenUDID value];
}
return [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
}
- (NSString *) identifierForVendor
{
if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
return @"";
}
- (BOOL)isAdvertisingTrackingEnabled
{
if (NSClassFromString(@"ASIdentifierManager") && ![[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
return NO;
}
return YES;
}
在模拟器上一切正常,我可以获得 2 个字符串 ID 表示。
但是当我从装有 iOS 6.0 (10A403) 的 iPhone 3GS 运行时,这两种方法返回“00000000-0000-0000-0000-000000000000”作为标识符。 已经完成:
- 重启设备
- 删除应用并重新安装
- 创建和 Ad-Hoc 构建、安装、删除和再次安装
- 从另一个应用程序运行此代码
- 在装有 iOS 6.0 (10A403) 的 iPad 2 上测试,一切正常正常(我有正确的标识符)
最佳答案
这似乎是 iOS 中的一个错误。在无线升级的设备上看到同样的问题,但使用 Xcode 或 iTunes 升级的设备按预期工作,没有零。
尝试了与您类似的步骤,唯一共同的主题是无线升级(坏)与系留升级(好)。
更新:通过无线方式直接从 iOS 5.1 转移到 6.1 的用户会体验到不同的行为。每次应用程序完全关闭并重新启动时,identifierForVendor
都会返回一个新值。如果正在卸载并重新安装应用程序,这是预料之中的,但事实并非如此。
关于ios - advertisingIdentifier 和 identifierForVendor 返回 "00000000-0000-0000-0000-000000000000",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605257/