我将ios游戏提交到应用商店。
xcode给我错误不正确的广告标识符[IDFA]用法。您的应用包含广告标识符[IDFA] API,但您尚未在iTunes Connect的“准备上传”页面中指明其用途。
如何解决这个问题? 任何帮助都是适当的。
答案 0 :(得分:43)
现在一切都已达到正常状态。只需上传您的二进制文件,并将IDFA广泛分为两类:
发布商:您使用第三方广告网络库来展示广告。选择IDFA中的第一个选项 - > "在应用程序内投放广告"。 自您展示广告以来,您就是发布商,但不会为自己的应用做广告。
广告客户:您使用第三方库来跟踪应用的转化情况,以及跟踪目标'在你的应用程序中您不能直接在自己的应用中展示广告。 选择第二个& IDFA中的第3个选项 - > "将此应用安装归因于先前投放的广告"。 和 "将此应用程序中采取的操作归属于先前投放的广告"。
混合:您可以跟踪应用的转化次数,并在应用中展示广告。 选择所有三个选项。
答案 1 :(得分:33)
您可以使用相同的bundleID上传任何应用程序。完成上传后,您可以拒绝二进制文件,下次将状态更改为“准备上传”时,请不要忘记选中[IDFA]。
答案 2 :(得分:22)
您必须在“准备上传”页面上选中“是”: 但是当您选中“否”时,您将无法在iTunes Connect上使用此新版本,并且无法重新进入“准备上传”页面或删除新版本。
目前,当发生此错误时,您的应用似乎永远锁定在旧版本上。 Apple必须解决这个问题!
答案 3 :(得分:14)
这对我现在很有用。
顺便说一下,启用此选项does not help us
答案 4 :(得分:10)
根据这个article,它描述了一个发布者,他在收到同样的问题后分享了Apple告诉他们的内容。
Apple建议发布商检查代码,包括第三方库,以消除以下任何情况:
类:ASIdentifierManager
selector:advertisingIdentifier
框架:AdSupport.framework
我遇到了同样的问题,并搜索了上面的实例......我在Playhaven api中找到了一个方法,在我评论了那个部分后我没有再次收到错误。
Playhaven api的更新可能已经解决了这个问题,但我不确定......我只是选择了快速解决方案。'。
答案 5 :(得分:7)
您只需上传任何具有相同捆绑ID但没有广告支持的应用,然后拒绝二进制文件并检查新的广告选项是否。然后,您可以毫无问题地提交您的应用程序。
答案 6 :(得分:6)
我在使用iTunes连接验证应用时遇到此警告,我使用的是从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以避免拒绝,查找并删除不需要的框架。
答案 7 :(得分:6)
iTunesConnect网站更改了处理此警告时的工作流程。您需要使用此警告上传您的应用程序(至少使用XCode 5.1.1)。
在iTunesConnect中,您现在可以在从XCode上传后选择您的版本。选择构建,然后单击“提交审阅”后,您将获得先前在准备上载时设置的提示(特别是“广告标识符”)。
答案 8 :(得分:5)
如果您在iTC上传页面中为IDFA选择“是”,请务必在Safari偏好设置中关闭AdBlocker ,否则您将收到错误“您必须选择应用的方式使用IDFA“,当您单击”继续“时,但不能选择该用法。
如果您的广告拦截器已关闭且一切正常,则HTML页面将展开以显示底部选择的选项。
答案 9 :(得分:2)
我有同样的问题。
我们的应用只需使用googleAnalytics / googleMaps库和TestFlight库。 我坚持使用itunes上的新版本连接IDFA上的NO标志。
我们无法移除此库,因为该应用程序将无法正常编译。
解决方案是什么?只需创建一个具有相同的包ID和版本ID的空应用程序,上传到itunes connect然后停止发布?真的?
谢谢:)
答案 10 :(得分:1)
如果问题仅与谷歌分析SDK相关,您可以升级它:新版本从AdSupport Framework中删除依赖项,从而从IDFA中删除依赖项。
答案 11 :(得分:1)
作为@iDurocher所说的完整详细答案:
1.确保在上传二进制文件后至少有一个活动的预发布版本(选择预发行版,然后确保有一个可点击的版本,请注意处理时间可能需要半小时)。
2.返回“版本”屏幕并选择以添加上载的版本
3.现在按提交进行审核,然后会询问您有关IDFA的信息。
答案 12 :(得分:0)
Facebook iOS SDK
也使用IDFA。据我了解,根据iTunes Connect中的信息,人们应该仅将IDFA用于广告目的。我把它删除了,现在好了。
答案 13 :(得分:0)
我有同样的问题,我解决了上传应用程序,尽管IDFA警告。然后,IPA被拒绝,您可以重新启动,并启用“准备上传”页面。 请务必在“准备上传”页面的“广告标识符”部分中选中“是”。
答案 14 :(得分:0)
在使用Xcode验证应用时,我遇到了与Admob(GoogleMobileAds)SDK相同的问题。
我的解决方案是:
使用Xcode将应用分发到iTunes Connect
在iTunes Connect页面中关闭Safari中的Adblock
由于iTunes Connect中IDFA使用不当,该应用被宣布为无效
我已经准备好了#34;准备上传"再次页面
我在此页面启用了广告标识符用法,等等
答案 15 :(得分:0)
- 拒绝二进制文件。
- 再次上传二进制文件。
- 检查选项“此应用是否使用广告标识符(IDFA)”
你已经完成了。
答案 16 :(得分:0)
您需要修改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"];
// }