不正确的广告标识符的使用
我正在向app store提交ios游戏。
Xcode给我错误广告标识符[IDFA]使用不当。 您的应用程序包含广告标识符[IDFA] API,但您尚未在iTunes Connect中的“准备上传”页面上指明其用法。
如何解决这个问题? 任何帮助appritiated。
您可以使用相同的bundleID上传任何应用程序。 上传完成后,您可以拒绝二进制文件,下次将状态更改为“准备上传”时,请勿忘记检查[IDFA]。
现在一切都已经到了平常的状态。 简单地上传你的二进制文件,就像你一直在做的那样,并且将IDFA大致分为两类:
-
发布商:您使用第三方广告networking库来展示广告。 selectIDFA中的第一个选项 – >“在应用程序内投放广告”。 自从您展示广告之后,您就是发布商,但不要为自己的应用执行广告。
-
广告客户:您可以使用第三方库来跟踪您应用的转化次数,并跟踪应用中的“目标”。 您直接不会在您的应用中展示广告。 selectIDFA中的第二个和第三个选项 – >“将此应用安装到以前投放的广告”。 以及“将此应用中采取的操作归因于之前投放的广告”。
-
混合:您可以跟踪应用的转化次数,并在应用中展示广告。 select所有三个选项。
您必须在“准备上传”页面上选中“是” 但是,当您选中“否”时,您将停留在iTunes Connect上的这个新版本,无法重新进入“准备上传”页面或删除新版本。
目前看起来像这个错误发生时,你的应用程序永远locking在旧版本上。 苹果必须解决这个问题!
- 从您的参考中删除Google Analytics(分析)库文件夹(Google Analytics(分析)使用[IDFA])
- 从您的参考中删除AdSupport框架
- 从您的参考中删除iADSupport框架
- 尝试再次上传
这对我来说现在工作。
顺便说一句,启用这个选项并不能帮助我们
根据这篇文章 ,哪一个出版商分享了苹果告诉他们在收到同样的问题后告诉他们。
苹果build议发行商检查代码,包括第三方库,以消除以下任何事件:
类:ASIdentifierManager
select器:advertisingIdentifier
框架:AdSupport.framework
我有同样的问题,并寻找上述实例…我find了一个方法与他们在Playhaven api,后我评论,部分我没有再次得到错误。
Playhaven api的更新也可能解决了这个问题,但我不确定…我只是select了“快速修复”。
您只需要上传具有相同捆绑ID并且没有广告支持的任何应用,然后拒绝二进制文件并检查新的广告选项是。 然后,您可以提交您的应用程序没有问题。
在使用iTunes连接validation应用程序时,我也遇到了这个警告 我正在使用从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中的另一个function
+ (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框架。 我已经通过这种方式解决了这个警告,我已经成功地上传了应用程序。
也看到这个堆栈问题链接,以避免拒绝,find并删除不需要的框架。
当您处理此警告时,iTunesConnect网站更改了工作stream程。 您将需要使用此警告上传您的应用程序(至less在XCode 5.1.1中)。
在iTunesConnect中,您现在从XCode上传后select您的版本。 select构build之后,点击“提交以供查看”,您将获得您在准备上传时提前设置的提示(具体为“广告标识符”)。
如果您在iTC上传页面中为IDFAselect了“是”,请务必在Safari偏好设置中closures您的AdBlocker ,否则当您点击“继续”时,您将收到错误“您必须select您的应用程序如何使用IDFA” “,但是不允许你select这个用法。
如果您的adblocker已closures,并且所有内容都按原样运行,则HTML页面将展开,以显示底部的要select的选项。
我也有同样的问题。
我们的应用程序只使用googleAnalytics / googleMaps库和TestFlight库。 我坚持一个新版本的iTunes连接IDFA NO标志。
我们不能删除这个库,因为应用程序将不能正确编译。
有什么解决scheme? 只需创build一个空的应用程序与相同的捆绑ID和版本ID,上传到iTunes连接,然后停止发布? 真?
谢谢 :)
如果问题仅与iOS的Google Analytics(分析)SDK相关,则可以对其进行升级:新版本从AdSupport Framework中删除依赖项,因此也从IDFA中删除依赖项。
作为@iDurocher所说的完整的详细答案:
1.确保在上传二进制文件之后至less有一个主动的预发布版本(select预发行版本,然后确保有一个可点击的版本,请注意,处理大概需要半个小时)。
2.返回“版本”屏幕并select 添加上传的版本。
3.现在按“提交”进行审查,然后询问有关IDFA的信息。
Facebook iOS SDK
也使用IDFA。 据我所知,根据iTunes Connect中的信息,只能将IDFA用于广告目的。 我把它删除了,现在没关系。
我有同样的问题,我解决了上传应用程序,尽pipeIDFA警告。 然后,IPA被拒绝,您可以重新启动,并启用“准备上传”页面。 请务必在“准备上传”页面的“广告标识符”部分中选中“是”。
在使用Xcodevalidation应用程序时,我遇到了与Admob(GoogleMobileAds)SDK相同的问题。
我的解决scheme是:
-
使用Xcode将应用程序分发到iTunes Connect
-
在Safari中closuresiTunes Connect页面的Adblock
-
由于iTunes Connect中的IDFA使用不当,该应用程序被宣布无效
-
我已经有了“准备上传”页面了
-
我在这个页面上启用了广告标识符的使用,等等
– 拒绝二进制。
再次上传二进制文件。
– 选中“此应用是否使用广告标识符(IDFA)”
你完成了。
您需要修改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"]; // }