iOS 隐私清单 PrivacyInfo.xcprivacy 问题解答

发布于:2024-05-08 ⋅ 阅读:(21) ⋅ 点赞:(0)

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

前几天讲了 iOS 新的隐私政策下,我们应该如何处理的文章,发布之后陆续收到一些朋友的私信,今天集中解答一下。

问题一:第三方库没有提供隐私清单怎么办?

这个是被问到最多的,因为有些老的项目用到了一些不维护的库,还有一些是作者还没来得及添加 PrivacyInfo.xcprivacy 文件,。

这时候需要我们自己为其添加 PrivacyInfo.xcprivacy 文件,首先通过查找源码或者通过一些脚本(比如上期推荐的那个开源脚本),找到这个库用到了哪些需要声明的 API,然后将这些 API 声明到你自己的主 App 的清单里。

问题二:如何知道我的隐私清单是否添加成功?

提交 App Store 之前,我们需要先查看是否这些隐私清单真的添加成功了。首先一个办法是通过查看打包后的产物查看。

查看你的主 App 隐私清单,需要将你的 ipa 文件重命名为 zip,然后解压,解压出来后,点击你的 App,鼠标右键,查看显示包内容,如果你的隐私清单添加成功,在这里目录下就可以看到 PrivacyInfo.xcprivacy 文件了,目录结构如下:

Sample.app/
    Info.plist
    Sample
    PrivacyInfo.xcprivacy 
    ...其他文件

如果你在开发的是 macOS App,则对应的目录应该是:

MacSample.app/
    Contents/
        Info.plist
        MacOS/
            MacSample
        Resources/
            PrivacyInfo.xcprivacy
        ...其他文件

如果你在开发的是一个 framework 库,则对应的目录应该是:

SampleFramework.framework/
    Info.plist 
    SampleFramework
    PrivacyInfo.xcprivacy 
    ...其他文件

如果你的库通过 Swift Package Manager 发布,则对应的目录应该是:

SamplePackage/
    README.md
    Package.swift
    Sources/
        SomeLibrary/
            SomeLibrary.swift
            Product.swift
            PrivacyInfo.xcprivacy
            ...其他文件
    Tests/
        ...其他文件

如果你的库通过 XCFramework 发布,则对应的目录应该是:

SampleFramework.xcframework/
    Info.plist
    ios-arm64/
       dSYMs/
           ...其他文件
       SampleFramework.framework/
           Info.plist
           SampleFramework
           PrivacyInfo.xcprivacy 
           ...其他文件
    ios-arm64_x86_64-simulator/
        dSYMs/
            ...其他文件
        SampleFramework.framework/
            Info.plist
            SampleFramework
            PrivacyInfo.xcprivacy 
            ...其他文件
           
       ...其他架构

每个架构都需要包含 PrivacyInfo.xcprivacy 文件。

当你将 app 打包提交到 App Store Connect 时,Xcode 15 会将应用中所有隐私清单汇总成一个 PDF 文件,想要查看这个文件可以通过打开 Xcode Organizer,右键点击生成隐私报告

问题三:为什么添加了隐私清单,提交后还是有警告?

如果你没有正确添加隐私清单,还是可能收到苹果类似的警告:

ITMS-91053: Missing API declaration — Your app’s code in the “AppName” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryFileTimestamp. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: .

大部分原因是因为没有将 PrivacyInfo.xcprivacy 文件添加到对应的 Target 下,上篇文章中也特意强调了,创建 PrivacyInfo.xcprivacy 文件时,务必勾选对应的 Target:

另外,提交之前,需要按照上述的问题二检查一遍。

问题四:生成隐私报告时提示:Missing an expected key: ‘NSPrivacyCollectedDataTypes’

这是因为你的 PrivacyInfo.xcprivacy 文件中缺少 NSPrivacyCollectedDataTypes 这个 Key,按照文档添加上去即可。

问题五:提示Multiple commands produce PrivacyInfo.xcprivacy

使用包含 PrivacyInfo.xcprivacy 文件的第三方 CocoaPods 库时,似乎会出现这个问题,原因是 podspec 文件配置错误,需要由第三方库开发人员更改 podspec 文件:

s.resource_bundles = { "Podname" => "Sources/Resources/PrivacyInfo.xcprivacy" }

推荐另一个工具

上篇文章推荐了一个 python 写的自动查找并生成隐私清单的脚本,今天再推荐另一个在线平台,,它可以根据你的选择,为你生成隐私清单的配置文件。

最后祝大家顺利过审

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 “”,每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!


网站公告

今日签到

点亮在社区的每一天
去签到