Firebase iOS / Swift 和深层链接

Firebase iOS / Swift and Deep Links

我们刚刚集成了 firebase,突然间我们的深层链接不再有效。我们使用 AppAuth 进行身份验证,因此我们依赖深层链接将我们引导至正确的位置。我收到以下错误:

<Debug> [Firebase/Analytics][I-ACS023001] Deep Link does not contain valid required params. URL params: {...}

firebase初始化如下:

let bundleId = Bundle.main.bundleIdentifier
let filePath = Bundle.main.path(forResource: "GoogleService-Info-" + bundleId!, ofType: "plist")!
let options = FIROptions(contentsOfFile: filePath)
FIRApp.configure(with: options!)

下面是深度链接函数:

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
        return application(app, open: url, sourceApplication: nil, annotation: [:])
    }

    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        if url.host == AppHost.deeplink {
        ...
   }

如果我删除对 FIRApp.configure 的调用,应用程序中的所有内容都可以正常工作。我的 AppAuth 重定向到上面的函数没有任何问题。但是,通过调用 configure(),它永远不会进入任何一个函数。因此,我无法进行令牌交换和完成身份验证。

我怀疑 AppDelegate 代理可能是问题所在,所以我尝试在 plist 文件中禁用它。我已验证传递给 FIRApp.configure 的 plist 文件具有适当的键:

<key>FirebaseAppDelegateProxyEnabled</key>
<false/>

但是无论我做什么,它仍然在激活代理:

[Firebase/Analytics][I-ACS003007] Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist

我只使用 FirebaseCrash 和 FirebaseCore(以及通过崩溃间接使用的 FirebaseAnalytics)

不要将 FirebaseAppDelegateProxyEnabled 键添加到 GoogleServices-Info.plist,而是将其添加到应用程序的 info.plist。 Google 服务 plist 一旦生成就不应修改。

至于关闭代理,长期这样就好了。代理是一个方便的东西(它只是混合了一些方法),你可以手动重新实现它。有一些示例 here 如何处理缺少代理(非 swizzling 情况)。