iOS 应用因 Facebook SDK 中的 IDFA 而被拒绝

Posted

技术标签:

【中文标题】iOS 应用因 Facebook SDK 中的 IDFA 而被拒绝【英文标题】:iOS app rejected due to IDFA in Facebook SDK 【发布时间】:2014-09-15 08:00:05 【问题描述】:

原因程序许可协议 PLA 3.3.12

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

具体来说,iOS 开发者程序许可协议第 3.3.12 节规定:

“您和您的应用程序(以及与您签订了提供广告服务合同的任何第三方)可以使用广告标识符以及通过使用广告标识符获得的任何信息,仅用于投放广告。如果用户重置广告标识符,则您同意不将先前的广告标识符和任何派生信息与重置的广告标识符直接或间接组合、关联、链接或以其他方式关联。”

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

类:ASIdentifierManager 选择器:广告标识符 框架:AdSupport.framework

如果您计划在未来的版本中加入广告,请从您的应用中移除广告标识符,直到您加入广告功能。

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

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

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

grep -r advertisingIdentifier .

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

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

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

一旦我删除了 FBAudience 框架并运行

otool -L myAppName.app/myAppName

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

怎么样?我有最新版本,但仍在受苦:( 我正在使用 FacebookSDK 4.1.0,但我的应用被拒绝了,我正在使用 FBSDKAppEvents,它需要按照 developers.facebook.com/docs/ios/troubleshooting#idfa 使用 IDFA ...我还没有找到解决方案,也许我会删除 FB 跟踪

以上是关于iOS 应用因 Facebook SDK 中的 IDFA 而被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

登录并再次授权时如何在iOS SDK中的Facebook应用程序中获取Facebook帐户的更改?

应用请求对话框中的问题(Facebook iOS SDK)

通过 ios Facebook SDK 中的共享对话框共享时归属应用名称

iPhone应用程序中的Facebook SDK登录

以编程方式从 iOS 中的 facebook SDK 注销

使用 SDK 3.5 在 iOS 上连接 Facebook