返回

Flutter iOS 应用遭遇“ITMS-91053:缺少 API 声明”警告?史上最全解决指南

IOS

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

常见问题解答

  1. 哪些 API 需要理由?

    • NSPrivacyAccessedAPICategoryFileTimestamp
    • NSPrivacyAccessedAPICategorySystemBootTime
    • NSPrivacyAccessedAPICategoryDiskSpace
    • NSPrivacyAccessedAPICategoryUserDefaults
  2. 我可以在哪里找到已批准的理由列表?

  3. 我可以在 Flutter 中使用哪些替代 API?

    • 对于大多数情况,有替代 API 不需要理由。在 Apple 文档中查找这些替代方案。
  4. 如果我的应用不使用任何受限 API,该怎么办?

    • 即使你的应用不使用任何受限 API,你仍然需要创建一个空的 Info.plist 文件来满足 Apple 的要求。
  5. 我的应用会被拒绝吗?

    • 如果你的应用不提供使用受限 API 的理由,它可能会被拒绝。

结论

通过添加一个隐私清单并提供使用受限 API 的理由,你可以解决“ITMS-91053:缺少 API 声明”警告。请记住,此要求将在 2024 年 5 月 1 日生效,因此及早采取措施至关重要。