关于 Apple 平台和 Firebase 的问题排查及常见问题解答

本页针对在 Apple 平台上使用 Firebase 时可能会遇到的特有问题,提供了技巧建议和问题排查方法。

还有其他难题,或是您的问题未在下面列出?请查看Firebase 的主要常见问题解答,详细了解针对整个 Firebase 以及特定产品的常见问题解答。

您还可以查看 Firebase Apple 平台 SDK GitHub 代码库,获取已报告问题和问题排查建议的最新列表。同时,我们也鼓励您在那里提交与 Firebase Apple 平台 SDK 相关的问题。

Firebase 最多支持 Xcode 的两个主要版本,不包括 Apple 不再支持的 Xcode 版本。例如,从 2019 年 3 月开始,Apple 便要求所有应用在 iOS 12 或以上版本中运行,这意味着 Xcode 9 已不再受支持,而 Xcode 10 成为了唯一受支持的主要版本。

我们根据 Firebase Apple 平台 SDK 的需求和开发者使用情况调查,确定是否更改对 Xcode 的特定次要或补丁版本(例如 9.2.0 到 9.4.1)的支持。这些更改会反映在 Firebase Apple 平台 SDK 版本说明Firebase Apple 平台 SDK 设置说明页面中。

要查看 SDK 支持的最低 Xcode 版本,请查看将 Firebase 添加到您的 Apple 项目中列出的要求。

Firebase 对 Xcode Beta 版的支持以“尽力而为”为原则。开发者可以在 GitHub 上的 Firebase Apple 平台 SDK 代码库中跟踪和提交问题。

将您的 Firebase 依赖项升级到 9.6.0 版或更高版本,并向您的目标平台添加[钥匙串共享功能](/docs/iOS/troubleshooting-faq#macos-keychain-sharing)。

Firebase SDK 使用钥匙串来存储信息,例如用于 FCM 的 Firebase 安装 ID。如果没有钥匙串访问权限,Firebase SDK 可能无法正常运行。macOS 钥匙串的行为方式与其他平台(iOS、tvOS、macCatalyst 和 watchOS)上使用的 iOS 式钥匙串有所不同。

在 macOS 上,应用使用可能由其他应用和进程修改的共享钥匙串。与 iOS 不同的是,应用没有默认即可访问的沙盒钥匙串。因此,当用户使用 Mac 应用访问钥匙串时,系统会提示用户需具备相应的访问权限,因为 Mac 应用可能会修改并非由自己创建的钥匙串条目。为了消除这种差异,Firebase 会使用 kSecUseDataProtectionKeychain 键查询钥匙串,这会指示应用查询钥匙串访问群组中包含的钥匙串条目(这在其他平台上是默认行为)。钥匙串共享功能是必需的,因为应用需要利用它来构成可在其目标之间共享的访问群组,以便能够自由访问该群组中的钥匙串条目。

如需了解详情,请参阅 Apple 的钥匙串文档

Apple 仅允许在 Info.plist 文件中包含 50 个 LSApplicationQueriesSchemes 条目。在 2015 年,Apple 引入了 LSApplicationQueriesSchemes 项来限制每个应用可进行的网址查询数量。在 Xcode 13 发布后,系统会强制执行这些限制;而在 Xcode 12 及更早版本中,架构数量则没有实质性的限制。

某些 Firebase 产品(如 Firebase AuthenticationFirebase Dynamic Links)需要使用自定义网址架构来重定向到您的应用。这些网址均采用简明且一致的网址架构,且不应对 50 个链接架构这一限制有显著影响。

请注意,如果应用累计注册的 LSApplicationQueriesSchemes 超过 50 个,某些架构将被静默忽略;这会使得应用可能无法执行某些深层链接,具体取决于这些链接的添加顺序。