CocoaPods第三方库PrivacyInfo.xcprivacy缺失问题处理指南(含ITMS-91061/91055解决方案)

CocoaPods 第三方库 PrivacyInfo.xcprivacy 缺失问题处理指南(含 ITMS-91061/91055 解决方案)

背景说明

自 2023 年 5 月起,苹果要求 App Store Connect 上传的应用必须为第三方 SDK 提供有效的隐私清单文件(PrivacyInfo.xcprivacy)。若未包含该文件或声明无效,将导致 ITMS-91061(缺失隐私清单)或 ITMS-91055(无效 API 声明)错误。


核心问题:ITMS-91061 错误

若应用使用的第三方库缺少隐私清单文件,苹果会返回以下错误:

ITMS-91061: Missing privacy manifest

ITMS-91061 邮件示例

解决方案分类

情况 1:直接升级到支持的版本(推荐)

适用场景:库已更新并发布包含 PrivacyInfo.xcprivacy 的新版本。
示例SVProgressHUD

  • 操作步骤
    1. 检查库的 GitHub 仓库或 CocoaPods 官方文档,确认最新版本是否已包含隐私清单文件。
    2. Podfile 中移除固定版本号,升级到最新版本:
      - pod 'SVProgressHUD', '2.2.5'
      + pod 'SVProgressHUD'
      
    3. 执行 pod update 并验证。

情况 2:指定 Git 分支/Commit(库已更新但未发布版本)

适用场景:库已添加隐私清单文件,但尚未发布新版本(如 MBProgressHUD)。
操作步骤

  1. 找到最新提交的 SHA 或分支

    • 访问库的 GitHub 仓库的 Commits 页面,复制最后一条提交的 SHA(通过 "Copy full SHA" 按钮)。
  2. 修改 Podfile 配置

    # 指定具体 Commit
    pod 'MBProgressHUD', :git => 'https://github.com/jdg/MBProgressHUD.git', :commit => '4a7c5f3e53cdea77c5dcb8578c2ee5acacdf6781'
    
    # 或直接使用 master 分支
    pod 'MBProgressHUD', :git => 'https://github.com/jdg/MBProgressHUD.git', :branch => 'master'
    
  3. 执行 pod install


情况 3:Fork 不再维护的库(极端情况)

适用场景:库已停止维护(如 AFNetworking)。
操作步骤

  1. Fork 仓库并添加隐私清单文件

    • 在 GitHub 上 Fork 仓库(如 AFNetworking)。
    • 克隆到本地后,在根目录创建 PrivacyInfo.xcprivacy 文件。
    • 文件内容示例(需根据实际 API 使用情况填写):
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
         <key>NSPrivacyTracking</key>
         <false/>
         <key>NSPrivacyTrackingDomains</key>
         <array/>
         <key>NSPrivacyCollectedDataTypes</key>
         <array/>
         <key>NSPrivacyAccessedAPITypes</key>
         <array/>
      </dict>
      </plist>
      
    • 参考文档:
  2. 更新 Podspec 文件
    AFNetworking.podspec 中添加资源声明:

    s.resource_bundles = {'AFNetworking' => ['PrivacyInfo.xcprivacy']}
    
  3. 在 Podfile 中引用 Fork 后的仓库

    pod 'AFNetworking', :git => 'https://github.com/你的GitHub用户名/AFNetworking.git', :branch => 'master'
    

    已提供修改版本:可直接使用 RomanticEncounter/AFNetworking,但需自行验证兼容性。


特殊错误处理:ITMS-91055

错误描述

ITMS-91055: Invalid API reason declaration

ITMS-91055 邮件示例

原因:隐私清单文件中填写的 API 声明或原因无效。
解决步骤

  1. 检查 PrivacyInfo.xcprivacy 文件
    • 确保 NSPrivacyAccessedAPITypes 中列出的 API 类型与实际使用完全匹配。
    • 每个 API 类型必须对应有效的 NSPrivacyAccessedAPITypeReasons
  2. 参考官方文档
  3. 修正后重新提交

其他注意事项

  1. 二进制库的处理
    若使用非开源的二进制库(如通过 .framework 直接集成),需联系库的开发者提供包含隐私清单文件的版本。
  2. 签名要求
    从二进制依赖的 SDK 需要开发者签名(需开发者账号权限),具体见苹果文档。
  3. 持续维护
    定期检查依赖库的更新,避免因版本过旧导致隐私清单缺失。

参考资源


通过以上步骤,可系统性解决因三方库缺少隐私清单文件导致的 App Store 提交失败问题。建议优先选择升级或 Fork 方式,避免因手动修改导致的兼容性风险。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容