当我在 xCode 5 中验证我的应用程序时,收到错误的广告标识符 [IDFA] 使用错误

Posted

技术标签:

【中文标题】当我在 xCode 5 中验证我的应用程序时,收到错误的广告标识符 [IDFA] 使用错误【英文标题】:Getting error improper advertising identifier [IDFA] usage,when i am validating my app in xCode 5 【发布时间】:2014-04-28 07:40:57 【问题描述】:

验证我的应用时,我收到一条错误消息

“广告标识符使用不当。您的应用包含广告标识符 [IDFA] API,但您没有遵守 ios 中的限制广告跟踪设置。”

我在广告标识符的准备上传页面上选中“是”。我在我的应用程序(COCOS2D-X 项目)中使用 revmob 广告和 Flurry 分析。如何解决这个问题,我尝试了很多但没有成功。我在 appdelegate 中使用了下面的代码,但没有运气。

- (NSString *)identifierForAdvertising

   if([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled])
   
       NSUUID *IDFA = [[ASIdentifierManager sharedManager] advertisingIdentifier];

       return [IDFA UUIDString];
   

    return nil;
  

【问题讨论】:

确保你更新到最新的revmob和flurry。此外,我可以通过删除对 AdSupport.framework 的引用(并在构建设置/构建阶段/将二进制文件与库链接中将状态设置为“可选”)使我的应用程序通过新的验证过程,您可以通过将直接引用替换为ASIdentifierManager 和 NSClassFromString(@"ASIdentifierManager") 这只是一个解决方法:( Stephane 感谢您提供的信息,我已经使用更新的 sdk 并且 AdSupport.framework 状态可选,但它不起作用,问题仍然存在。 您的应用委托中粘贴的代码还有吗?你不应该需要它。 是的,我在应用代理中使用上述代码。如果我没有在应用代理中使用此代码,“不正确的广告标识符”问题仍然存在。最近苹果在 iTunes 中更改了“广告标识符”。我在互联网上阅读了这篇文章并按照以下链接实施。链接:- [1]stunningco.de/2014/04/13/… [2]techcrunch.com/2014/04/11/… improper advertising identifier [IDFA] usage的可能重复 【参考方案1】:

这个 IDFA 问题今天仍然发生在我身上。我将其追踪到 GoogleAnalytics pod,因此我只是通过在 podfile 中指定 pod 'GoogleAnalytics-iOS-SDK', '~> 3.0.7' 为我解决了问题将 pod 更新为最新版本。该版本以前未指定,但使用的是 3.0.3。

【讨论】:

谢谢,我遇到了同样的问题。 GoogleAnalytics 3.0.3 引起了这个警告。我更新到 3.0.7,警告消失了。【参考方案2】:

4 月 26 日左右,Apple 更改了他们的 IDFA 扫描程序。点击“准备上传”后,您不仅需要选中相应的复选框,而且您的代码(或您拥有的任何其他第三方库都必须通过直接使用该类来使用 IDFA。

有人建议这样做:

“你可以通过用 NSClassFromString(@"ASIdentifierManager") 替换对 ASIdentifierManager 的直接引用来做到这一点”

不要使用这种方法加载这个类!新的扫描程序将专门针对这一点,如果找到它而不是直接引用 - Apple 似乎认为跟踪标识符有一些奇怪的用法。我不能说我不同意这个决定。

要准确找出哪个库出了问题可能并不容易。例如,最新的 AdMob SDK 直接使用该类,并不是问题的根源。

找出问题根源的一种方法是从项目中删除 AdSupport.Framework,然后查看哪些库链接失败。这些库不是问题。看看您是否有其他广告库不需要您包含 AdSupport.Framework - 这些很可能是罪魁祸首。

这听起来有点反直觉,但直接引用不是问题,该类的动态(弱)加载是。

希望这对某人有所帮助 - 我们一直在努力解决问题,直到找到问题的根源。

【讨论】:

哇,所以苹果的验证过程比我想象的还要糟糕:)(我是建议使用 NSClassFromString 解决方法的人)。感谢您的反馈! 他们似乎已经反转了扫描,现在在 IDFA 使用方面只需要透明度。因此,即使在提交二进制文件时可能会检查所有所需的复选框,但如果该类不用作直接引用,他们会拒绝二进制文件,假设 IDFA 是在提交二进制文件时获得的这三个复选框选项设置的边界之外使用的。 您的评论很有用,我对我的应用程序进行了快速扫描,自定义库以确认在 iOS 7 中设置限制广告跟踪时是否调用 API。我已经使用了这个基本的代码,但 Apple 仍在发送拒绝邮件 -> NSString *advertiserId = @""; if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) ASIdentifierManager *advIdManager = [ASIdentifierManager sharedManager]; AdvertisingrId = [[advIdManager 广告标识符] UUIDString]; 【参考方案3】:

看起来 Apple 现在已经恢复了这些更改。所有应用程序都再次像往常一样运行:)

【讨论】:

我还没有得到IDFA的解决方案,现在当我将我的应用程序上传到iTunes时,iTunes显示应用程序状态为“无效二进制”。我认为这是由于广告标识符不正确.任何人都可以向我建议如何解决此问题,以便我可以毫无问题地上传应用程序。 您使用的是哪个广告网络 SDK?当您的应用准备好进行二进制上传时,您需要为 IDFA 选择“展示广告”选项。

以上是关于当我在 xCode 5 中验证我的应用程序时,收到错误的广告标识符 [IDFA] 使用错误的主要内容,如果未能解决你的问题,请参考以下文章

当我验证应用程序时,Xcode 管理器无法列出我的所有应用程序

在 Xcode 5 中,当我在源代码控制下添加服务器时出现错误

XCode 4.5 中的代码签名身份

存档验证错误

使用 Xcode 5.1.1 未找到应用程序记录

没有可用于签署 Xcode 5 的身份