所以过了一会儿我终于发现了!
事实上,当应用程序还没有启动时,openurl就不会被调用,这是很有逻辑性的。
例子:
my_app://query?id=azerty
-
应用程序已经在后台启动
-
这个
OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
会被叫进来的
url
你可以找到应用程序的启动链接。
-
应用程序未在后台运行未启动
-
这个
FinishedLaunching(UIApplication application, NSDictionary launchOptions)
实际上会有
网址
LaunchOptions中的参数。钥匙
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;
}
}
我希望上面的解释和代码示例能够帮助您理解和/或解决未来的问题!
马克斯