【问题标题】:improper advertising identifier [IDFA] usage广告标识符 [IDFA] 使用不当
【发布时间】:2014-05-23 15:14:38
【问题描述】:

我正在向应用商店提交 ios 游戏。

xcode 给我错误广告标识符 [IDFA] 使用不当。您的应用程序包含广告标识符 [IDFA] API,但您尚未在 iTunes Connect 的“准备上传”页面上指明其用途。

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

【问题讨论】:

  • 一些答案​​建议删除使用 IDFA 的 SDK,但如果您包含正确实施和使用 IDFA 的广告网络,则这不是一个选项......苹果的左手不知道它的右手是什么是在做!!!希望他们能早日解决这个问题。

标签: ios app-store-connect


【解决方案1】:

现在一切都已恢复正常。只需上传您的二进制文件,然后将 IDFA 大致分为两类:

  1. 发布者:您使用第三方广告网络库来展示广告。选择 IDFA 中的第一个选项 -> “在应用内投放广告”。 您是发布商,因为您展示广告,但不为您自己的应用投放广告。

  2. 广告商:您使用第三方库来跟踪应用的转化情况,以及跟踪应用中的“目标”。您直接不在您的应用中展示广告。 在 IDFA ->“将此应用安装归因于之前投放的广告”中选择第二和第三选项。 和 “将此应用程序中采取的操作归因于之前投放的广告”。

  3. 混合:您跟踪应用的转化情况,并在应用中展示广告。 选择所有三个选项。

【讨论】:

  • 这个答案是截至 2014 年 5 月 13 日最相关的。
  • 这是截至 2014 年 7 月 29 日最相关的内容。
  • 只是为了确定,使用谷歌分析而不显示广告被认为是案例 2?
【解决方案2】:

您可以上传任何具有相同 bundleID 的应用程序。上传完成后,您可以拒绝二进制文件,下次您将状态更改为准备上传时,请不要忘记检查 [IDFA]。

【讨论】:

  • 非常感谢!它对我有用。
  • 我遇到了同样的问题。知道你必须上传你的二进制文件,如果你收到“你正在使用 IDFA”之类的警告,你的二进制文件会在一分钟后自动被拒绝。然后您可以再次选择“准备上传二进制文件”
【解决方案3】:

您必须在准备上传页面上勾选“是”: 但是当您选择“否”时,您会在 iTunes Connect 上卡住这个新版本,并且无法重新进入准备上传页面或删除您的新版本。

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

【讨论】:

  • 我修复了图片链接。
  • 使用错误报告器提交错误!
  • 他们应该在应用验证中添加一个检查,显然这被遗忘了。
  • 请看下面的步骤:stackoverflow.com/a/22980811/860343,它不会永远被锁定。
【解决方案4】:
  1. 从您的参考资料中删除 Google Analytics Library 文件夹(Google Analytics 使用 [IDFA])
  2. 从您的参考中删除 AdSupport 框架
  3. 从您的参考中删除 iADSupport 框架
  4. 再次尝试上传

这对我有用。

顺便说一句,启用此选项does not help us

【讨论】:

  • 删除引用是什么意思?
  • 只需从你的包中删除它
  • 当您想使用 GAI 时,这是一个怎样的答案?
  • 嗯,这是 2 年前的事了,有更新吗?
【解决方案5】:

据此article 称,该邮件描述了一位发布者,该发布者分享了苹果在收到相同问题后告诉他们的内容。

Apple 建议发布者检查代码,包括第三方库,以消除以下任何情况:

类:ASIdentifierManager

选择器:广告标识符

框架:AdSupport.framework

我遇到了同样的问题,并搜索了上述实例......我在 Playhaven api 中找到了一种方法,在我评论该部分后我没有再次收到错误。

Playhaven api 的更新也可能已修复此问题,但我不确定...我只是选择了“快速修复”。

【讨论】:

【解决方案6】:

您只需要上传任何具有相同捆绑 ID 且不支持广告的应用,然后拒绝二进制文件并检查新的广告选项是。然后您就可以毫无问题地提交您的应用了。

【讨论】:

    【解决方案7】:

    在使用 iTunes connect 验证应用程序时,我也遇到了这个警告,我使用的是从 Ref Link 下载的 FacebookSDK.framework。在 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;
    

    } 到

    + (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 并从 Ref Link 下载了 Facebook 框架。我已经通过这种方式解决了这个警告,并且我已经成功上传了应用程序。

    还请参阅此堆栈问题Link 以避免拒绝,查找并删除不需要的框架。

    【讨论】:

    • 固定框架的链接不可用。你能提供一个新的吗?我仍然无法让这个工作。谢谢
    【解决方案8】:

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

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

    【讨论】:

    • 在切换到这个新界面之前标记为“等待上传”的应用程序仍然存在问题,即使您上传了二进制文件,您也不会获得“提交审核”选项。我正在联系苹果,看看他们有什么建议。
    【解决方案9】:

    如果您在 iTC 上传页面中为 IDFA 选择“是”,请务必在 Safari 偏好设置中关闭您的 AdBlocker,否则您将收到错误消息“您必须选择您的应用使用 IDFA”,当您单击“继续”时,您无法选择该用法。

    如果您的广告拦截器已关闭并且一切正常,HTML 页面会展开并在底部显示可供选择的选项。

    【讨论】:

    • 这现在显示在表单中,因此自 2014 年 8 月起可能不再需要此建议
    【解决方案10】:

    我也有同样的问题。

    我们的应用只使用 googleAnalytics/googleMaps 库和 TestFlight 库。 我在 iTunes 上使用新版本连接 IDFA 上的 NO 标志。

    我们无法删除此库,因为该应用将无法正确编译。

    解决办法是什么?只需创建一个具有相同捆绑ID和版本ID的空应用程序,上传到iTunes Connect然后停止发布?真的吗?

    谢谢:)

    【讨论】:

    • 是的,您能够更改 IDFA 设置的唯一方法是上传二进制文件并拒绝它。如您所说,您可以创建一个具有相同捆绑 ID 的空项目并上传该项目。
    【解决方案11】:

    如果问题仅与适用于 iOS 的 Google Analytics SDK 相关,您可以对其进行升级:新版本从 AdSupport Framework 中删除依赖项,从而从 IDFA 中删除。

    【讨论】:

      【解决方案12】:

      作为对@iDurocher 所说内容的完整详细回答:
      1. 确保您在上传二进制文件后至少有一个有效的预发布版本(选择预发布版本,然后确保有一个可点击的版本,注意处理时间可能需要半小时)。
      2. 返回版本屏幕并选择 以添加上传的版本。
      3. 现在按提交进行审核,然后您将被询问有关 IDFA 的信息。

      【讨论】:

      • 在 iTunes 上进行最新更新之前,我的应用程序处于准备上传状态。当我选择要上传的构建时,IDFA 的提示是否仍然存在?
      • @Hitesh:是的,他们也可能会向您发送电子邮件,当您选择构建然后选择提交以供审核时一切都会好起来的,然后您会找到 IDFA 选项。
      • 非常感谢。是的,它成功了,并且该应用程序在 App Store 上很好。
      【解决方案13】:

      Facebook iOS SDK 也使用 IDFA。据我了解,根据 iTunes Connect 中的信息,应仅将 IDFA 用于广告目的。我删了,现在好了。

      【讨论】:

        【解决方案14】:

        我遇到了同样的问题,我解决了上传应用程序的问题,尽管出现了 IDFA 警告。然后,IPA 被拒绝,您可以重新开始,启用“准备上传”页面。 请务必在“准备上传”页面的“广告标识符”部分中选中“是”。

        【讨论】:

          【解决方案15】:

          在使用 Xcode 验证应用程序时,我在使用 Admob (GoogleMobileAds) SDK 时遇到了同样的问题。

          我的解决方案是:

          1. 使用 Xcode 将应用分发到 iTunes Connect

          2. 在 Safari 中为 iTunes Connect 页面关闭 Adblock

          3. 由于 iTunes Connect 中的 IDFA 使用不当,该应用程序被宣布为无效

          4. 我又打开了“准备上传”页面

          5. 我在此页面上启用了广告标识符使用,等等

          【讨论】:

            【解决方案16】:

            -拒绝二进制文件。

            -再次上传二进制文件。

            -勾选“此应用是否使用广告标识符(IDFA)”选项

            你就完成了。

            【讨论】:

              【解决方案17】:

              如果你正在使用它,你需要修改MixPanel.m上的代码。

               - (NSString *)defaultDistinctId
              {
                  NSString *distinctId = nil;
                  if (NSClassFromString(@"ASIdentifierManager")) {
                      distinctId = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
                  }
                  if (!distinctId) {
                      NSLog(@"%@ error getting ifa: falling back to uuid", self);
                      distinctId = [[NSUUID UUID] UUIDString];
                  }
                  if (!distinctId) {
                      NSLog(@"%@ error getting uuid: no default distinct id could be generated", self);
                  }
                  return distinctId;
              
              }
              

              - (NSString *)defaultDistinctId
              {
                     return @"";
              
              }
              

              并在 collectAutomaticProperties ,collectAutomaticProperties 函数下面的行注释

              //    if (NSClassFromString(@"ASIdentifierManager")) {
              //        [p setValue:[[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString] forKey:@"$ios_ifa"];
              //    }
              

              【讨论】:

                猜你喜欢
                • 2023-03-03
                • 2015-10-05
                • 2014-06-12
                • 1970-01-01
                • 1970-01-01
                • 2015-12-12
                • 2014-06-01
                • 1970-01-01
                • 2018-11-10
                相关资源
                最近更新 更多