ios - advertisingIdentifier 和 identifierForVendor 返回 "00000000-0000-0000-0000-000000000000"

标签 ios xcode ios6 ads

我已经实现了这个方法来获取 advertisingIdentifieridentifierForVendor:

- (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/

相关文章:

ios - BLKFlexibleHeightBar 行为定义器不符合 UITableViewDelegate

ios - 如何在 React Native 中检查/更改 iOS 版本?

ios - 有什么方法可以在 iOS 中发生未捕获的异常后执行代码?

ios - 如何从其中包含许多 UITextview 的 UIView 复制和检索数据

ios - AFNetworking 错误太多 http 重定向 iOS 9

ios - Swift 中的流控制 - AVAudioPlayer

ios - 偏移 UIRefreshControl

ios - 定位一个文本文件 Objective C

ios - "Variable binding in a condition requires an initializer"Swift 2.0 错误

facebook - 如何让 UIWebView 打开 Facebook 登录页面以响应 iOS 5 和 iOS 6 上的 OAuth 请求?