在AppDelegate类中,我试图处理启动Xamarin iOS应用程序的深层链接,以便我可以根据URL将用户导航到应用程序中的正确位置。我覆盖了所有的ContinueUserActivity和OpenUrl方法,但是这些方法都没有被调用过(无论是在应用关闭还是暂停时)。我正在通过在iOS日历中包含深层链接(https://example.com/path1/path2)进行测试事件,然后在应用程序以调试模式运行时,点击我的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(分析)即将消失...)
归功于@Andrew McKinley,但是对于遇到相同问题的其他人,解决方法是向您的Info.plist文件添加新密钥:
键:FirebaseAppDelegateProxyEnabled类型:布尔值:否(假)
此后,Firebase停止劫持对深层链接URL的处理,因此,当单击深层链接时,将正确调用AppDelegate.ContinueUserActivity。