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解决您以后的问题!

最大