不当的广告标识符[IDFA]使用

56

我正在提交 iOS 游戏到应用商店。

Xcode 给了我一个错误提示:违规使用广告标识符 [IDFA]。你的应用程序包含广告标识符 [IDFA] API,但在 iTunes Connect 的“准备上传”页面中没有指明其使用情况。

如何解决这个问题?感谢任何帮助。


2
一些答案建议删除使用IDFA的SDK,但是如果您包括一个正确实现和使用IDFA的广告网络,则这不是一个选项...苹果公司的左手不知道右手在做什么!希望他们能尽早解决这个问题。 - jsherk
17个回答

43

现在一切恢复正常。像往常一样上传您的二进制文件,并将IDFA大体分类为两类:

  1. 发布者:您使用第三方广告网络库显示广告。选择IDFA中的第一项 - "在应用内提供广告"。如果您仅展示广告而不为自己的应用程序进行广告投放,则视为发布者。

  2. 广告主:您使用第三方库跟踪应用中的转化率以及跟踪应用中的“目标”。您直接不在应用程序中展示广告。请选择IDFA中的第二和第三个选项 - “将此应用安装归因于以前提供的广告” 和 “将在此应用程序中执行的操作归因于以前提供的广告”。

  3. 混合:您跟踪应用中的转化率并在应用中显示广告。请选择所有三个选项。


1
这个答案截至2014年5月13日是最相关的。 - Vincent
2
截至2014年7月29日,这是最相关的。 - LucasA
为了确保,使用Google Analytics而不显示广告被认为是第二种情况吗? - Christoph

33

您可以上传与相同bundleID的任何应用程序。上传完成后,您可以拒绝二进制文件,并在下一次将状态更改为“准备上传”时,不要忘记勾选[IDFA]。


非常感谢!这对我很有用。 - Duc Nguyen
2
我遇到了同样的问题。你需要上传二进制文件,如果你收到一个警告,比如“你正在使用IDFA”,那么你的二进制文件将在一分钟后被自动拒绝。然后你可以再次选择“准备上传二进制文件”。 - zero3nna

22

在“准备上传”页面上,您必须选中“Yes”: enter image description here 但如果您选择了“No”,您将被困在iTunes Connect上的新版本中,无法重新进入“准备上传”页面或删除新版本。

目前,当出现此错误时,似乎您的应用程序永远被锁定在旧版本上。 苹果必须修复这个问题!


我修复了图片链接。 - Marko
使用错误报告工具提交一个 Bug! - RickJansen
他们应该在应用程序验证中添加一个检查,显然这被遗忘了。 - RickJansen
请查看以下步骤:https://dev59.com/hWAg5IYBdhLWcg3w9e4y#22980811,这样它就不会永久锁定。 - XIII

14
  1. 从您的引用中删除Google Analytics库文件夹 (Google Analytics使用[IDFA])
  2. 从你的引用中删除AdSupport框架
  3. 从你的引用中删除iADSupport框架
  4. 再次尝试上传

这对我来说现在很有效。

顺便说一句,启用此选项不能帮助我们


你是指删除引用吗? - Aviram Netanel
1
从您的包中删除它即可。 - DeveloBär
当你想要使用 GAI 时,这怎么成为一个答案呢? - Christoph
1
这是两年前的事了,有没有一些更新的进展? - DeveloBär

10
根据这篇文章,报道了一位发布者分享了苹果公司在收到相同问题后告诉他们的建议。
苹果建议该发布者检查代码,包括第三方库,以删除以下任何情况:

class: ASIdentifierManager

selector: advertisingIdentifier

framework: AdSupport.framework

我也遇到了同样的问题,并搜索了上述实例...我在Playhaven api中找到了一个带有它们的方法,在我注释掉那部分后,我没有再次遇到错误。
Playhaven api的更新可能也已经解决了这个问题,但我不确定...我只选择了“快速修复”。

对于PlayHaven,您可以使用此临时解决方案,直到他们更新其SDK:https://dev59.com/questions/qH_aa4cB1Zd3GeqPyxuU#23309587 - XIII

7

您只需要上传与无广告支持相同的捆绑标识(bundle id)的任何应用程序,然后拒绝二进制文件并勾选新的广告选项,最后就可以毫无问题地提交您的应用程序了。


6

在使用从参考链接下载的FacebookSDK.framework时,我在验证应用程序与iTunes Connect时遇到了此警告enter image description here。在FBUtility.m中,我注释掉了下面的代码并删除了Adsupport.Frmaework

+ (NSString *)advertiserID {
NSString *advertiserID = nil;
Class ASIdentifierManagerClass = [FBDynamicFrameworkLoader loadClass:@"ASIdentifierManager" withFramework:@"AdSupport"];
if ([ASIdentifierManagerClass class]) {
    ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
    advertiserID = [[manager advertisingIdentifier] UUIDString];
}
return advertiserID;

} to

+ (NSString *)advertiserID {

return @"";

并且在同一类中更改了另一个函数 FBUtility.m

+ (FBAdvertisingTrackingStatus)advertisingTrackingStatus {

if ([FBSettings restrictedTreatment] == FBRestrictedTreatmentYES) {
    return AdvertisingTrackingDisallowed;
}
FBAdvertisingTrackingStatus status = AdvertisingTrackingUnspecified;
Class ASIdentifierManagerClass = [FBDynamicFrameworkLoader loadClass:@"ASIdentifierManager" withFramework:@"AdSupport"];
if ([ASIdentifierManagerClass class]) {
    ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
    if (manager) {
        status = [manager isAdvertisingTrackingEnabled] ? AdvertisingTrackingAllowed : AdvertisingTrackingDisallowed;
    }
}
return status;

}

+ (FBAdvertisingTrackingStatus)advertisingTrackingStatus {

FBAdvertisingTrackingStatus status =AdvertisingTrackingUnspecified;
return status;

我已经删除了FacebookSDK.framework并从参考链接下载了Facebook框架。我通过这种方式解决了警告,成功上传了应用程序。

此外,为避免被拒绝,请参考此堆栈问题链接,查找和删除不需要的框架。


固定框架的链接不可用。你能提供一个新的链接吗?我还是无法让它工作。谢谢。 - Lucas Pereira

6

iTunesConnect网站更改了处理此警告的工作流程。您需要使用此警告上传您的应用程序(至少使用XCode 5.1.1)。

在iTunesConnect中,您现在可以在从XCode上传后选择构建。选择构建后,然后单击“提交审核”,您将获得之前准备上传时设置的提示(特别是“广告标识符”)。


对于在切换到这个新界面之前被标记为“等待上传”的应用程序仍然存在问题,即使您已经上传了二进制文件,也不会获得“提交审核”的选项。我正在联系苹果,看看他们会建议什么。 - XIII

5
如果您在iTC上传页面选择了IDFA的"Yes"选项,请确保在Safari首选项中关闭您的AdBlocker,否则当您点击"Continue"时,您将会收到错误消息"You must select how your App uses the IDFA",但却无法为此选择选项。如果您的AdBlocker已关闭并且一切正常运作,HTML页面会展开以显示底部的选项。

此时此刻,该建议已经不再需要了,因为自2014年8月起,它已经内联在表单中显示。 - Andy Dent

2
我有同样的问题。
我们的应用程序仅使用Google Analytics / Google Maps库和TestFlight库。我在iTunes Connect上遇到了一个新版本,但IDFA没有标志。
我们不能删除这些库,因为否则应用程序将无法编译。
解决方法是什么?只需创建一个具有相同bundle id和version id的空应用程序,上传到iTunes Connect,然后停止发布即可吗?真的吗?
谢谢 :)

1
是的,你唯一能够更改那个IDFA设置的方法就是上传一个二进制文件然后拒绝掉它。正如你所说,你可以创建一个相同包标识的空项目并上传那个项目。 - aronspring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接