因为idFa被appStore拒绝,查了一下,工程里使用idfa的情况(广告标识符),在本项目中没有使用iad广告,只是使用了广告标识符; 看来还是得在使用了IDFA的,还得让审核人员看到广告。可以加入本地广告图片,或者自定义一张广告等广告
啥是IDFA
关于IDFA,在提交应用到App Store时,iTunes Connect有如下说明:分析如下:
最近这类的被拒,特别多,因为Apple修改了审核标准,IDFA只能用于广告服务。
PLA 3.3.12
"You and Your Applications (and any third party with whom you have contracted to serve advertising) may us the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier."
出现这种情况的原因如下:
1 使用了第三方的库,第三方的库根据IDFA进行跟踪用户,同时APP没有加载广告。
2 使用了第三方的库,第三方的库根据IDFA进行跟踪用户,同时加载了iAD广告。
3 同时使用了iAD+ADMOB等广告。
被拒的情况大概就是上面三种,其他的不会有问题。
对应的解决方法:
--第一种情况解决方法:
需要把和IDFA相关的代码和接口去除,因为IDFA只可以用于广告服务。
--第二种情况解决方法:
iAD不使用IDFA,具体怎么实现的,iOS内部搞的,所以要解决这个问题需要把iAD换成类似Admob一类的广告服务,或者按照第一种情况来解决,就是去除第三方中IDFA相关的代码和接口。
--第三种情况解决方法:
大概比较费解,明明加了Admob等广告,为啥还是给我拒绝了呢,这种情况要看广告的加载机制,一般开发者会优先加载iAD,如果没有广告源,则加载Admob(Admob是使用了IDFA),问题就出现了在这里,审核人员一般在美国,那里是有iAD的,或者现在app的状态还没有上线,iad属于测试状态,所以iAD的广告是可以获取,这样就给审核人员一个印象:app使用了IDFA(admob中),但是只是展示了iAD的广告,没有看到其他的广告服务,他们会怀疑你使用IDFA做了其他的事情,所以拒了!!
检查IDFA的方法:
打开终端cd到要检查的文件的根目录(记住是项目根目录, 不是ipa目录, 原作者不说清除)
执行下列语句:
grep -r advertisingIdentifier
例子1:
虽然ShareSDK本身没使用IDFA,但是ShareSDK里面的新浪微博SDK使用了。这点ShareSDK官方也说明了,如果需要彻底没有使用IDFA,可以移除新浪微博SDK,分享、第三方登录等依然可以继续使用,不受影响。
例子2:
可以检查出ShareSDK自带的MOBFoundation.framework和新浪微博SDK都使用了IDFA
其他命令查找
find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep advertisingIdentifier
使用这个终端命令查找,查到几个使用的库里带有idfa
libWeChatSDK.a
libWeiboSDK.a
libTalkingData.a
libTalkingDataAppCpa.a