Firebase iOS / Swift 和深层链接

Mat*_*att 6 ios firebase swift firebase-crash-reporting

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

<Debug> [Firebase/Analytics][I-ACS023001] Deep Link does not contain valid required params. URL params: {...}
Run Code Online (Sandbox Code Playgroud)

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!)
Run Code Online (Sandbox Code Playgroud)

这是深层链接功能:

    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 {
        ...
   }
Run Code Online (Sandbox Code Playgroud)

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

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

<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Run Code Online (Sandbox Code Playgroud)

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

[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
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ark 6

不要将FirebaseAppDelegateProxyEnabled密钥GoogleServices-Info.plist添加到 ,而是将其添加到您的应用程序的info.plist. Google 服务 plist 生成后不应修改。

至于禁用代理,长期这样做是可以的。代理是一个方便的东西(它只是调配了一些方法),您可以手动重新实现它。有一些例子在这里如何处理缺乏代理(非交叉混合的情况)的。