【问题标题】:iOS: Universal link always opens the appiOS:通用链接始终打开应用程序
【发布时间】:2017-06-21 14:53:10
【问题描述】:

服务器上与苹果应用网站相关的 JSON 如下所示:

{
    "applinks": {
        "apps": [],
        "details": {
            "TEAM_AND_BUNDLE_ID": {
                "paths": [
                    "*"
                ]
            }
        }
    }
}

我希望调用 func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool 方法,以便我可以确定是否应该实际打开应用程序(调用 myurl.com/open 时为 true,仅调用 myurl.com 时为 false)。

但是没有调用appdelegate方法,只是简单的打开了应用。

显而易见的解决方案是将路径组件放入 JSON,但据我所知,JSON 仅在安装应用程序时下载,因此不考虑 JSON 中的任何更改。

【问题讨论】:

    标签: ios ios-universal-links


    【解决方案1】:

    这是正确的行为。如果点击满足apple-app-site-association 文件中条件的 URL,您的应用将始终启动。您无法在 continue userActivity 内控制它。

    安装应用程序时下载apple-app-site-association 文件是正确的。它将通过 App Store 重新下载以进行更新,这意味着添加新路径并确保所有用户都拥有它们,您通常需要发布应用更新。

    排除站点根路径的正确方法是将apple-app-site-association文件格式化如下:

    {
        "applinks": {
            "apps": [],
            "details": {
                "TEAM_AND_BUNDLE_ID": {
                    "paths": [
                        "NOT /",
                        "*"
                    ]
                }
            }
        }
    }
    

    / 仅匹配站点的根目录,* 匹配整个 站点(包括根目录)。这是有效的,因为 iOS 会按顺序评估规则,一旦找到匹配项就会停止。

    在无需不断更新您的应用的情况下处理此问题的更好方法是使用托管的深层链接服务,例如 Branch.io(完全披露:我在 Branch 团队)或 Firebase 动态链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      相关资源
      最近更新 更多