本页针对在 Apple 平台上使用 Firebase 时可能会遇到的特有问题,提供了技巧建议和问题排查方法。
还有其他难题,或是您的问题未在下面列出?请查看Firebase 的主要常见问题解答,详细了解针对整个 Firebase 以及特定产品的常见问题解答。
您还可以查看 Firebase Apple 平台 SDK GitHub 代码库,获取已报告问题和问题排查建议的最新列表。同时,我们也鼓励您在那里提交与 Firebase Apple 平台 SDK 相关的问题。
我的应用提示用户需输入密码才能在 macOS 上访问钥匙串条目。如何解决这个问题?
将您的 Firebase 依赖项升级到 9.6.0 版或更高版本,并向您的目标平台添加[钥匙串共享功能](/docs/iOS/troubleshooting-faq#macos-keychain-sharing)。
Firebase 为何需要在 macOS 上实现钥匙串共享功能?
Firebase SDK 使用钥匙串来存储信息,例如用于 FCM 的 Firebase 安装 ID。如果没有钥匙串访问权限,Firebase SDK 可能无法正常运行。macOS 钥匙串的行为方式与其他平台(iOS、tvOS、macCatalyst 和 watchOS)上使用的 iOS 式钥匙串有所不同。
在 macOS 上,应用使用可能由其他应用和进程修改的共享钥匙串。与 iOS 不同的是,应用没有默认即可访问的沙盒钥匙串。因此,当用户使用 Mac 应用访问钥匙串时,系统会提示用户需具备相应的访问权限,因为 Mac 应用可能会修改并非由自己创建的钥匙串条目。为了消除这种差异,Firebase 会使用 kSecUseDataProtectionKeychain
键查询钥匙串,这会指示应用查询钥匙串访问群组中包含的钥匙串条目(这在其他平台上是默认行为)。钥匙串共享功能是必需的,因为应用需要利用它来构成可在其目标之间共享的访问群组,以便能够自由访问该群组中的钥匙串条目。
如需了解详情,请参阅 Apple 的钥匙串文档。
在 Xcode 13 及更高版本中,为什么我的 UIKit 应用无法打开我在 Info.plist 中注册的部分网址?
Apple 仅允许在 Info.plist
文件中包含 50 个 LSApplicationQueriesSchemes
条目。在 2015 年,Apple 引入了 LSApplicationQueriesSchemes
项来限制每个应用可进行的网址查询数量。在 Xcode 13 发布后,系统会强制执行这些限制;而在 Xcode 12 及更早版本中,架构数量则没有实质性的限制。
某些 Firebase 产品(如 Firebase Authentication 和 Firebase Dynamic Links)需要使用自定义网址架构来重定向到您的应用。这些网址均采用简明且一致的网址架构,且不应对 50 个链接架构这一限制有显著影响。
请注意,如果应用累计注册的 LSApplicationQueriesSchemes
超过 50 个,某些架构将被静默忽略;这会使得应用可能无法执行某些深层链接,具体取决于这些链接的添加顺序。