【发布时间】:2019-06-14 18:56:10
【问题描述】:
在我的 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 即将停用...)
【问题讨论】:
-
你可能还需要WillContinueUserActivity:和DidFailUserActivity,如果
WillContinue返回false,可以调用DidFail。 -
@NSGangster 如果 WillContinue 返回 false,我不确定您的意思。如果我重写 WillContinueUserActivity,我需要自己返回 true 或 false。即使我返回 true,也永远不会调用 ContinueUserActivity。
-
那么 WillContinueUserActivity 会断点吗?你检查它是否失败了吗?
-
是的,WillContinueUserActivity 命中断点。我不确定它是否失败是什么意思。它只是覆盖了该方法,然后我需要返回 true 或 false。我无法调用 base.WillContinueUserActivity 来查看结果是什么,因为这会引发异常,说明您无法调用基本方法。
-
还有另一种方法
DidFailUserActivity,如果你覆盖它并断点它,你可以看到NSError,它应该会给你更多关于它失败原因的信息。如果您的ContinueUserActivity未被调用,则很可能断点会命中DidFailUserActivity方法。
标签: ios firebase xamarin xamarin.ios firebase-analytics