由于Facebook SDK中的IDFA,iOS应用被拒绝

原因计划许可协议PLA 3.3.12

我们发现您的应用使用了iOS广告标识符,但未包含广告function。 这不符合App Store审查指南要求的iOS开发人员计划许可协议的条款。

具体而言,iOS开发人员计划许可协议的第3.3.12节规定:

“您和您的应用程序(以及您与之签约投放广告的任何第三方)可以使用广告标识符,以及通过使用广告标识符获得的任何信息,仅用于提供广告。如果用户重置广告标识符,您同意不会直接或间接地将先前的广告标识符和任何衍生信息与重置的广告标识符相关联,关联,链接或以其他方式关联。

请检查您的代码 – 包括任何第三方库 – 以删除以下任何实例:

class:ASIdentifierManager
selector:advertisingIdentifier
框架:AdSupport.framework

如果您计划在将来的版本中加入广告,请从您的应用中删除广告标识符,直到您添加了广告function。

要帮助找到广告标识符,请使用“nm”工具。 有关“nm”工具的信息,请打开终端窗口并输入“man nm”。

如果您无权访问库源,则可以使用“strings”或“otool”命令行工具搜索已编译的二进制文件。 “strings”工具列出了库调用的方法,“otool -ov”将列出Objective-C类结构及其定义的方法。 这些技术可以帮助您缩小有问题的代码所在的位置。

我通过以下命令检查了谁使用IDFA:

grep -r advertisingIdentifier . 

我知道Facebook SDK(3.1.1版本)使用它。

我怎么解决这个问题?

我的解决方案是facebook 3.20 SDK确实没问题,但我不得不删除它们包含在FacebookSDK.framework中的FBAudience框架。

一旦我删除了FBAudience框架,就跑了

 otool -L myAppName.app/myAppName 

我不再看到捆绑到我的构建中的AdSupport库,在终端中打印如下:

 /System/Library/Frameworks/AdSupport.framework/AdSupport 

如果您没有找到从Facebook SDK中删除IDFA使用的方法,那么另一种解决方案就是说您正在使用IDFA将安装归因于之前提供的广告(实际上在Facebook SDK)。

如果我没记错的话,在iTunesConnect中创建新版本时,您可以使用此选项。

Facebook在其最新版本中已经解决了这个问题。 将您的Facebook sdk更新到最新版本,这将解决您的问题。