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

J. *_*sta 25 xcode ads ios ios6

我已经实现了这个方法来获取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;
}
Run Code Online (Sandbox Code Playgroud)

在模拟器上一切正常,我可以获得2个字符串ID表示.

但是当我从带有iOS 6.0的iPhone 3GS(10A403)运行时,这两种方法返回"00000000-0000-0000-0000-000000000000"作为标识符.已经完成了:

  • 重启设备
  • 删除了应用程序并重新安装
  • 创建和Ad-Hoc再次构建,安装,删除和安装
  • 从另一个应用程序运行此代码
  • 使用iOS 6.0(10A403)在iPad 2上测试,一切正常(我有正确的标识符)

Mat*_*ttP 24

它似乎是iOS中的一个错误.在通过无线方式升级的设备上看到相同的问题,但使用Xcode或iTunes升级的设备按预期工作,没有零.

尝试过与你类似的步骤,唯一的共同主题是无线(坏)与有线升级(好).

更新:直接从iOS 5.1移动到6.1空中的用户体验不同的行为.每次完全关闭应用程序并重新启动时,都会返回一个新值identifierForVendor.如果应用程序正在卸载并重新安装,则会出现这种情况,但事实并非如此.

  • 苹果如何删除某些内容(UID)并将其替换为*不起作用的内容*非常简洁. (9认同)
  • 我们刚刚通过无线更新了几个设备到iOS 6.0.1,并且`identifierForVendor`似乎是固定的. (5认同)

Pet*_*mer 8

为响应技术支持事件请求,Apple在其系统中确认了此错误.他们说,identifierForVendoradvertisingIdentifier有时返回所有零既可以在发展中可以看出建立和应用下载量超过苹果的App Store中的空气.他们没有解决办法,也无法说明何时解决问题.