该advertisingIdentifier和identifierForVendor回报“00000

2019-06-18 07:50发布

我实现了这个方法来获取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;
}

在模拟器一切工作应该是,我可以得到两个字符串的ID表示。

但是,当我从iPhone 3GS的iOS 6.0(10A403)运行,这2种方法返回“00000000-0000-0000-0000-000000000000”作为标识。 已经完成了:

  • 重新启动设备
  • 删除该应用程序并重新安装
  • 创建和特设的构建,安装,拆卸和安装一次
  • 从另一个应用程序运行这段代码
  • 在测试了iPad 2的与iOS 6.0(10A403),一切都OK(我已经得到了正确的标识符)

Answer 1:

这似乎是iOS中的错误。 眼看就已经升级过的空气的设备,但在Xcode或iTunes工作升级的设备相同的问题,因为没有预期的零。

试过类似的步骤,你,唯一共同的主题是在空中(坏)与拴升级(好)。

更新:直接从移动的iOS 5.1到6.1在空中体验不同的行为的用户。 每个应用程序被完全关闭并重新启动时,一个新的价值正在被返回identifierForVendor 。 如果应用程序正在卸载并重新安装,但并非如此,这将可以预期。



Answer 2:

苹果证实响应技术支持事件,要求在他们的系统中,此缺陷。 他们说, identifierForVendoradvertisingIdentifier有时返回所有零既可以在发展中可以看出建立和应用下载量超过苹果的App Store中的空气。 他们没有变通,不能说当问题将是固定的。



Answer 3:

有一些地方API返回等之后恢复设备ID空的响应情况。

建议是推迟ID retreival,这样你就可以调用sometginh是这样的:

-(void)retrieveID
{
    if (<check fails>)
        [self performSelector:@"retrieveID" withObject:nil afterDelay:1.0];
}

后来又取ID。



文章来源: The advertisingIdentifier and identifierForVendor return “00000000-0000-0000-0000-000000000000”