代码之家  ›  专栏  ›  技术社区  ›  Emixam23

xamarin.ios-应用程序关闭时深度链接不工作

  •  0
  • Emixam23  · 技术社区  · 6 年前

    我不明白,当应用程序在后台时,DeepLink工作得很好,但是当它关闭时,应用程序就启动了,什么也没有发生。 而且,由于应用程序一开始是关闭的,所以我无法调试它(至少我不知道如何调试)。

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

    最好的,

    马克斯

    1 回复  |  直到 6 年前
        1
  •  0
  •   Emixam23    6 年前

    所以过了一会儿我终于发现了!

    事实上,当应用程序还没有启动时,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;
        }
    }
    

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

    马克斯