Xamarin.iOS-深度链接不';应用程序关闭时无法工作
我不明白,当应用程序在后台时,deeplink工作正常,但当它关闭时,应用程序只是启动,什么也没有发生。。 此外,由于应用程序一开始是关闭的,我无法调试它(至少我不知道如何调试) 你知道为什么它不起作用吗 最好的Xamarin.iOS-深度链接不';应用程序关闭时无法工作,xamarin.ios,deep-linking,Xamarin.ios,Deep Linking,我不明白,当应用程序在后台时,deeplink工作正常,但当它关闭时,应用程序只是启动,什么也没有发生。。 此外,由于应用程序一开始是关闭的,我无法调试它(至少我不知道如何调试) 你知道为什么它不起作用吗 最好的 Max所以过了一会儿我终于发现了 实际上,当应用程序还没有启动时,OpenUrl不会被调用这一事实是非常符合逻辑的 示例:my_app://query?id=azerty 应用程序已在后台#启动 OpenUrl(UIApplication应用程序、NSUrl url、NSDicti
Max所以过了一会儿我终于发现了 实际上,当应用程序还没有启动时,OpenUrl不会被调用这一事实是非常符合逻辑的 示例:
my_app://query?id=azerty
- 应用程序已在后台#启动
将被调用,在OpenUrl(UIApplication应用程序、NSUrl url、NSDictionary选项)
中,您可以找到启动应用程序的链接url
- 应用程序未在后台运行#未启动
实际上会在launchOptions中包含url参数。然后,您要查找的键就是UIApplicationLaunchOptionsURLKeyFinishedLaunching(UIApplication应用程序,NSDictionary launchOptions)
public class AppDelegate : UIApplicationDelegate
{
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
/* ... */
if (launchOptions != null && launchOptions.Count > 0)
{
try
{
var url = launchOptions["UIApplicationLaunchOptionsURLKey"] as NSUrl;
var result = AppDeepLinksEntry(url);
}
catch (Exception ex) { /* ... */ }
}
/* ... */
}
#region OpenUrl
public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
{
return AppDeepLinksEntry(url);
}
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
return AppDeepLinksEntry(url);
}
#endregion OpenUrl
private bool AppDeepLinksEntry(NSUrl url)
{
Debug.WriteLine($"OpenUrl Url : {url}");
Debug.WriteLine($"OpenUrl Url Query: {url.Query}");
Debug.WriteLine($"OpenUrl Url Host: {url.Host}");
Debug.WriteLine($"OpenUrl Url Path: {url.Path}");
return true;
}
}
我希望上面的解释和代码示例能够帮助您理解和/或解决您未来的问题
Max您是否使用Url方案或第三方库来实现深度链接<代码>OpenUrl(UIApplication应用程序、NSUrl url、NSDictionary选项)无论应用程序处于后台还是终止状态,都将始终启动。您可以处理此事件来进行配置。我正在使用您刚才提供的OpenUrl。。问题是,由于我无法调试,我不知道为什么它似乎不工作..你确定当应用程序关闭时它在你这边工作吗?(甚至不在后台运行)是的。您可以尝试使用NSUserDefaults显示警报或存储字符串,以确认是否调用此事件。在本次活动中,请尝试共享您的代码,这有助于我们了解您想要达到的效果。共享代码很困难,因为应用程序已经很复杂,而且由于保密性。。。我知道这会让事情变得复杂。。你知道什么时候会调用OpenUrl吗?像是在完成发射之前还是之后?我并不完全同意这一点。我们可以从
launchOptions
获取url,因为当应用程序终止时,如果我们打开应用程序,将调用事件FinishedLaunching
。但是正如我在上面所说的,OpenUrl()
总是会被触发,从中我们可以知道,如果URL在你的应用程序挂起或在后台运行时到达,系统会在调用此方法之前将你的应用程序移到前台。也许你是对的,但我确实按照你说的做了。。当应用程序关闭时,我似乎没有通过OpenUrl
。此外,我试图在AppDelegate中编辑调试变量的值,但仍然没有任何结果。。也许只是我们的应用程序创造了这种行为?