Xamarin.iOS - 应用关闭时,深层链接无效

时间:2018-05-28 21:01:08

标签: xamarin.ios deep-linking

我没有得到它,当应用程序处于后台时,深度链接工作正常,但当它关闭时,应用程序刚刚启动,没有任何反应.. 此外,由于应用程序最初关闭,我无法调试它(至少我不知道该怎么做)。

你知道它为什么不起作用吗?

最佳,

最高

1 个答案:

答案 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;
    }
}

我希望上面的解释和代码示例可以帮助您理解和/或解决您未来的问题!

最高