解决 App Store 审核中 Missing Privacy Manifest 问题的完整记录

5,633 阅读2分钟

我自己的设置 如下:

背景

在提交我们的应用 xxxx(版本 1.0,Build 7)至 App Store 审核时,苹果发来了一封警告邮件,指出以下问题:

ITMS-91061: Missing Privacy Manifest

您的应用包含以下第三方 SDK:

1. AFNetworking

2. IQKeyboardManager

3. SDWebImage

这些 SDK 被标记为可能影响用户隐私,因此需要在提交时包含隐私清单文件(Privacy Manifest)。

这封邮件明确指出,从 2025 年 2 月 12 日起,如果 App 包含这些可能影响隐私的 SDK,必须提供隐私清单文件。

问题分析

根据苹果提供的链接(第三方 SDK 隐私要求),我们需要为上述 SDK:

1. 确认它们可能访问的隐私 API 类型。

2. 在 PrivacyInfo.xcprivacy 文件中添加相关信息。

主要涉及的三个 SDK 及其隐私访问类型:

1. AFNetworking:处理文件时间戳,用于缓存功能。

2. IQKeyboardManager:使用 NSUserDefaults 存储键盘设置和用户偏好。

3. SDWebImage:可能会访问设备的系统启动时间以优化缓存性能。

解决步骤

1. 确定 Privacy Accessed API Type

苹果为每种隐私访问类型提供了一组标准化的选项。我们根据每个 SDK 的功能,选择了以下类型:

2. 修改 PrivacyInfo.xcprivacy 文件

在项目的根目录中创建或更新 PrivacyInfo.xcprivacy 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>File Timestamp - 0A2A.1</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>File Timestamp - 0A2A.1: 3rd-party SDK wrapper on-device, per documentation</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>User Defaults - C56D.1</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>User Defaults - C56D.1: 3rd-party SDK wrapper on-device, per documentation</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>System Boot Time - 35F9.1</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>System Boot Time - 35F9.1: Measure time on-device, per documentation</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

3. 验证第三方 SDK 版本

确保使用的 SDK 版本包含隐私清单文件,或者联系 SDK 开发者获取更新版本。

AFNetworking:升级到最新版本,或检查其文档是否提供隐私清单支持。

IQKeyboardManager:确认版本是否兼容苹果隐私要求。

SDWebImage:下载最新版本并验证隐私清单。

4. 测试并重新提交

1. 本地运行项目,验证 PrivacyInfo.xcprivacy 文件是否成功加载。

2. 提交新版本到 App Store Connect,等待苹果审核。

用脚本工具帮我添加

python3 update_privacy_info.py /xxx/xxx/xxx/xx

具体步骤:

1. 打开终端。

2. 确保当前目录为脚本所在目录(例如 /xxx/xx/xx/update_privacy_info.py-main)。

3. 运行上面修改后的命令。

4.文件放在根目录