Flutter iOS 应用遭遇“ITMS-91053:缺少 API 声明”警告?史上最全解决指南
2024-05-18 21:53:02
Flutter iOS 应用中的“ITMS-91053:缺少 API 声明”警告:终极解决指南
引言
作为一名经验丰富的 Flutter 开发者,我经常遇到“ITMS-91053:缺少 API 声明”警告。为了帮助 fellow Flutter 开发者解决这个棘手的问题,我决定分享我解决它的完整指南。
问题:什么是“ITMS-91053:缺少 API 声明”警告?
当你构建 iOS Flutter 应用时,可能会遇到这个警告,它表明你的应用代码引用了需要提供理由才能使用的 API。这些 API 涵盖以下类别:
- 文件访问
- 系统启动时间
- 磁盘空间
- 用户默认设置
原因:苹果要求理由
从 2024 年 5 月 1 日开始,Apple 要求你提供使用这些 API 的已批准理由。如果不这样做,你的应用将无法通过 App Store Connect 审核。
解决方案:添加隐私清单
要解决这个警告,你需要在你的 Flutter 项目中创建一个名为 Info.plist
的隐私清单文件。该文件将包含你使用受限 API 的理由。
添加理由
在 Info.plist
文件中,为每个你使用的受限 API 添加一个理由。理由必须是已批准的理由之一,例如:
- 文件访问:读取或写入文件
- 系统启动时间:确定设备已启动的时间
- 磁盘空间:确定设备的可用磁盘空间
- 用户默认设置:存储或检索用户首选项
重新构建并提交
添加隐私清单后,重新构建你的应用并将其提交到 App Store Connect 进行审核。
深入了解:应用程序的隐私清单
隐私清单是一个 XML 文件,其中包含你的应用程序如何使用受限 API 的信息。除了理由之外,它还包含以下信息:
- 应用程序名称
- 应用程序包标识符
- 支持的设备
- 隐私政策 URL
常见问题解答
-
哪些 API 需要理由?
- NSPrivacyAccessedAPICategoryFileTimestamp
- NSPrivacyAccessedAPICategorySystemBootTime
- NSPrivacyAccessedAPICategoryDiskSpace
- NSPrivacyAccessedAPICategoryUserDefaults
-
我可以在哪里找到已批准的理由列表?
-
我可以在 Flutter 中使用哪些替代 API?
- 对于大多数情况,有替代 API 不需要理由。在 Apple 文档中查找这些替代方案。
-
如果我的应用不使用任何受限 API,该怎么办?
- 即使你的应用不使用任何受限 API,你仍然需要创建一个空的
Info.plist
文件来满足 Apple 的要求。
- 即使你的应用不使用任何受限 API,你仍然需要创建一个空的
-
我的应用会被拒绝吗?
- 如果你的应用不提供使用受限 API 的理由,它可能会被拒绝。
结论
通过添加一个隐私清单并提供使用受限 API 的理由,你可以解决“ITMS-91053:缺少 API 声明”警告。请记住,此要求将在 2024 年 5 月 1 日生效,因此及早采取措施至关重要。