Xamarin.iOS - Deep link 在应用程序关闭时不起作用
Xamarin.iOS - Deep link doesn't work when app is closed
我不明白,当应用程序处于后台时,深层链接工作正常,但当它关闭时,应用程序只是启动,没有任何反应..
另外,由于应用一开始是关闭的,我无法调试它(至少我不知道该怎么做)。
你知道为什么它不起作用吗?
最佳,
最大
所以我终于在一段时间后发现了!
实际上,当应用程序尚未启动时 OpenUrl 不会被调用这一事实是很合乎逻辑的。
示例: my_app://query?id=azerty
应用程序已在后台#launched
OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
将被调用,在 url
中您可以找到 link 应用程序是用哪个 link 启动的。
应用程序不在后台 运行 #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;
}
}
希望上面的解释和代码示例能帮助您理解and/or解决您以后的问题!
最大
我不明白,当应用程序处于后台时,深层链接工作正常,但当它关闭时,应用程序只是启动,没有任何反应.. 另外,由于应用一开始是关闭的,我无法调试它(至少我不知道该怎么做)。
你知道为什么它不起作用吗?
最佳,
最大
所以我终于在一段时间后发现了!
实际上,当应用程序尚未启动时 OpenUrl 不会被调用这一事实是很合乎逻辑的。
示例: my_app://query?id=azerty
应用程序已在后台#launched
OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
将被调用,在url
中您可以找到 link 应用程序是用哪个 link 启动的。
应用程序不在后台 运行 #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;
}
}
希望上面的解释和代码示例能帮助您理解and/or解决您以后的问题!
最大