iOS 隐私清单配置指南(2024最新)| 含AFNetworking/SDWebImage等第三方库适配教程

4,360 阅读2分钟

导语:2024年5月起,苹果强制要求所有应用配置隐私清单(Privacy Manifest)。本文手把手教你为老项目适配隐私清单,并详解AFNetworking、SDWebImage等常用库的处理方案,避免审核被拒!


一、为什么必须配置隐私清单?

  • 政策要求:2024年5月1日后,未声明隐私清单的应用将无法通过App Store审核。
  • 用户信任:明确数据收集行为(如位置、设备ID),提升用户对隐私保护的感知。
  • 规避风险:未声明敏感API(如剪切板、文件路径)的使用可能导致下架。

二、隐私清单配置全流程(含代码示例)

步骤1:创建主工程隐私清单文件

  1. 在Xcode中添加文件
    File → New → File → iOS → Resource → Privacy Manifest File,命名为PrivacyInfo.xcprivacy

  2. 声明数据收集类型(示例):

    <key>NSPrivacyCollectedDataTypes</key>
    <array>
        <dict>
            <key>NSPrivacyCollectedDataType</key>
            <string>User ID</string>
            <key>NSPrivacyCollectedDataTypeLinkedToUser</key>
            <true/>
            <key>NSPrivacyCollectedDataTypeTracking</key>
            <false/>
            <key>NSPrivacyCollectedDataTypePurposes</key>
            <array>
                <string>Analytics</string>
            </array>
        </dict>
    </array>
    
  3. 声明敏感API使用(以文件时间戳为例):

    <key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>DDA9.1</string> <!-- 原因代码 -->
            </array>
        </dict>
    </array>
    

三、常用第三方库的适配方案

1. AFNetworking(已停止维护)

  • 问题:旧版本无隐私清单,需手动适配。

  • 解决方案

    • 手动添加文件:在AFNetworking目录中创建PrivacyInfo.xcprivacy,声明其可能访问的API(如网络状态):

      <key>NSPrivacyAccessedAPITypes</key>
      <array>
          <dict>
              <key>NSPrivacyAccessedAPIType</key>
              <string>NSPrivacyAccessedAPICategoryNetwork</string>
              <key>NSPrivacyAccessedAPITypeReasons</key>
              <array>
                  <string>8FFB.1</string> <!-- 网络请求功能实现 -->
              </array>
          </dict>
      </array>
      
    • 替代方案:迁移至Alamofire(内置隐私清单)。

2. SDWebImage(已适配)

  • 推荐操作:升级至最新版本(≥5.18.0),无需额外配置。

3. Alamofire(官方推荐)

  • 优势:原生支持隐私清单,无需手动处理。

四、常见错误与排查工具

  1. 审核被拒

    • 错误原因:未声明第三方库的数据收集(如广告SDK的IDFA)。

    • 排查工具

      # 扫描二进制文件中的隐私API调用
      nm YourApp.app/YourApp | grep -i 'CAAnimation|NSFileCreationDate'
      
  2. 编译冲突

    • 解决方案:在Podfile中排除重复的隐私清单文件:

      post_install do |installer|
        installer.pods_project.targets.each do |target|
          target.build_configurations.each do |config|
            # 移除第三方库的隐私清单编译
            config.build_settings['CODE_SIGN_ENTITLEMENTS'] = ''
          end
        end
      end
      

结语:隐私清单配置已成为iOS开发者的必修课。本文提供的代码模板和第三方库适配方案,可帮助开发者快速满足苹果审核要求。立即行动,为你的应用添加隐私保护合规护盾!

相关资源