我的应用刚被拒绝,并收到以下消息:
PLA 3.3.12
We found that your app uses the iOS Advertising Identifier but does
not include ad functionality. This does not comply with the terms of
the iOS Developer Program License Agreement, as required by the App
Store Review Guidelines.Specifically, section 3.3.12 of the iOS Developer Program License
Agreement states:“You and Your Applications (and any third party with whom you have
contracted to serve advertising) may use 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.”Note: iAd does not use the AdSupport framework, ASIdentifierManager,
or the Advertising Identifier. Therefore they are not required for iAd
implementations and should not be included in your app for iAd
support.If your app is serving ads, please:
Ensure that you have tested your app on a device, not just the simulator, and that you have removed all previous versions of your app
prior to testingProvide us the steps to locate ads in your app
If your app does not serve ads, please check your code – including any
third-party libraries – to remove any instances of:class: ASIdentifierManager selector: advertisingIdentifier framework:
AdSupport.frameworkIf you are planning to incorporate ads in a future version, please
remove the Advertising Identifier from your app until you have
included ad functionality.To help locate the Advertising Identifier, use the “nm” tool. For
information on the “nm” tool, please see the nm man page.If you do not have access to the libraries’ source, you may be able to
search the compiled binary using the “strings” or “otool” command line
tools. The “strings” tool lists the methods that the library calls,
and “otool -ov” will list the Objective-C class structures and their
defined methods. These techniques can help you narrow down where the
problematic code resides.
我的应用仅使用iAd,没有其他广告框架.我试图找到问题,这就是我发现的:
>在构建设置中,我看到了AdSupport框架:
我可能已经包含它了,因为在某处教程.这是问题吗?如果我删除AdSupport.framework,我的iAd是否仍能正常工作?
>使用命令行,我cd到我的项目的根文件夹和
grep -r advertisingIdentifier .
我得到了以下结果:
./Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEventsUtility.m:
result = [[manager advertisingIdentifier] UUIDString];
以下是FBSDKAppEventUtility.m中的详细代码(FacebookSDK 4.1.0 – 我在FBSDK 3.1中阅读了一些关于FacebookSDK关于广告标识符问题的帖子.我不相信FBSDK 4.1.0中仍然存在这个问题!):
+ (NSString *)advertiserID
{
NSString *result = nil;
Class ASIdentifierManagerClass = fbsdkdfl_ASIdentifierManagerClass();
if ([ASIdentifierManagerClass class]) {
ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
result = [[manager advertisingIdentifier] UUIDString];
}
return result;
}
我使用pod在我的应用程序中安装Facebook SDK,正如您所看到的,代码中包含与advertisingIdentifier相关的内容.
我也在FBSDKAppEventUtility.m中看到:
#import <AdSupport/AdSupport.h>
以及在FBSDKAppEventUtility.m中的其他函数中存在多个ASIdentifierManagerClass
它会导致我被拒绝吗?是否有人因使用FBSDKCoreKit使用广告标识符而被拒绝?
最佳答案 正如Daniel所说,您需要重新提交给Apple进行审核,并提及Facebook SDK在使用App Events或使用Facebook Audience Network SDK提供广告时需要AdSupport.framework.这并不能自动保证批准.
Facebook iOS SDK文档有一个Troubleshooting Guide,涵盖SDK的哪些部分需要AdSupport.framework.
我还认为审核提交过程中有一个部分会询问您是否使用IDFA,如果您使用的是App Events(包括[FBSDKAppEvents activateApp]),那么我相信您应该在提交中突出显示.