我没有得到它,当应用程序处于后台时,深度链接工作正常,但当它关闭时,应用程序刚刚启动,没有任何反应.. 此外,由于应用程序最初关闭,我无法调试它(至少我不知道该怎么做)。
你知道它为什么不起作用吗?
最佳,
最高
答案 0 :(得分:0)
所以我终于在一段时间后发现了!
实际上,当应用程序未启动时OpenUrl未被调用的事实是非常合乎逻辑的。
示例: my_app://query?id=azerty
应用已经在后台#launched
OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
将被调用,url
您可以找到应用已启动的链接。应用程序未在后台运行#not_launched
FinishedLaunching(UIApplication application, NSDictionary launchOptions)
实际上会在launchOptions中包含 url 参数。然后,密钥UIApplicationLaunchOptionsURLKey
就是您正在寻找的密钥。代码示例:
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;
}
}
我希望上面的解释和代码示例可以帮助您理解和/或解决您未来的问题!
最高