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

时间:2019-06-14 18:56:10

标签: ios firebase xamarin xamarin.ios firebase-analytics

在AppDelegate类中,我试图处理启动Xamarin iOS应用程序的深层链接,以便我可以根据URL将用户导航到应用程序中的正确位置。我覆盖了所有的ContinueUserActivity和OpenUrl方法,但是这些方法都没有被调用过(无论是在应用关闭还是暂停时)。我正在通过将深层链接(https://example.com/path1/path2)包含在iOS日历事件,然后在应用程序以调试模式运行时,点击我的iPhone 6(运行iOS 12.3.1)上的链接。点击链接后,我的应用程序确实打开了,但是在任何覆盖的方法中都没有命中任何断点。

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;
            }

我认为通用链接设置正确(关联的域等),否则它将无法启动我的应用程序。此外,我已经确认我的FinishedLaunching方法返回true,因为我在其他地方读到,如果此方法返回false,则不会调用ContinueUserActivity和OpenUrl。会调用AppDelegate中其他覆盖的方法,例如OnActivated和WillContinueUserActivity,但不会调用需要在深层链接URL处使用的方法。

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

编辑:更多信息...事实证明,Firebase SDK破坏了深层链接。如果我禁用它,则单击深层链接将成功调用ContinueUserActivity。但是,一旦我调用Firebase.Core.App.Configure(),则随后的深层链接单击仍将打开该应用程序,但不再调用ContinueUserActivity。我不确定如何解决此问题,因为我需要Firebase for Analytics(Google Analytics(分析)即将消失...)

1 个答案:

答案 0 :(得分:0)

感谢@Andrew McKinley,但对于遇到同一问题的其他人,解决方法是向您的Info.plist文件添加新密钥:

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

此后,Firebase停止劫持对深层链接url的处理,因此,当单击深层链接时,将正确调用AppDelegate.ContinueUserActivity。