从深层 link 启动应用程序时未调用 AppDelegate ContinueUserActivity,应归咎于 Firebase SDK

AppDelegate ContinueUserActivity not called when launching app from deep link, Firebase SDK is to blame

在我的 AppDelegate class 中,我正在尝试处理启动我的 Xamarin iOS 应用程序的深层 links,以便我可以将用户导航到基于 url 的应用程序。我覆盖了所有 ContinueUserActivity 和 OpenUrl 方法,但是这些方法中的 none 曾经被调用(无论是在应用程序关闭还是刚刚暂停时)。我正在通过包含深度 link ( https://example.com/path1/path2) 在 iOS 日历事件中,然后点击我的 iPhone 6 (运行 iOS 12.3.1) 上的 link,同时应用 运行 处于调试模式。当点击 link 时,我的应用程序确实会打开,但是在任何覆盖的方法中都会遇到 none 个断点。

public override bool ContinueUserActivity (UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler) {
            return true;
        }

    public override bool OpenUrl (UIKit.UIApplication app, Foundation.NSUrl url, Foundation.NSDictionary options) {
                return true;
            }

            public new bool OpenUrl (UIKit.UIApplication app, Foundation.NSUrl url, UIKit.UIApplicationOpenUrlOptions options) {
                return true;
            }

            public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation) {
                return true;
            }

我认为通用 link 设置正确(关联域等...),否则它不会启动我的应用程序。此外,我已确认我的 FinishedLaunching 方法 returns 为真,正如我在其他地方读到的那样,如果此 returns 为假,则不会调用 ContinueUserActivity 和 OpenUrl。 AppDelegate 中的其他覆盖方法(如 OnActivated 和 WillContinueUserActivity)被调用,但不是我需要深入了解的方法 link url.

这是 Xamarin iOS 错误吗?还是我做错了什么?我正在使用最新版本的 Xamarin iOS (12.8.0.2)。

编辑:多一点信息...事实证明,Firebase SDK 是破坏深度 links 的罪魁祸首。如果我禁用它,那么点击深 link 将成功调用 ContinueUserActivity。但是,一旦我调用 Firebase.Core.App.Configure(),随后的深度 link 点击仍会打开应用程序,但不再调用 ContinueUserActivity。我不确定如何解决这个问题,因为我需要 Firebase for Analytics(Google Analytics 即将消失...)

归功于@Andrew McKinley,但对于 运行 遇到相同问题的其他人,解决方案是向您的 Info.plist 文件添加新密钥:

键:FirebaseAppDelegateProxyEnabled 类型:布尔 值:否(假)

在那之后 Firebase 停止劫持深度 link url 的处理,因此当点击深度 link 时 AppDelegate.ContinueUserActivity 被正确调用。