尝试使用通用链接设置重定向到应用,但没有任何事情发生

时间:2018-04-21 01:06:35

标签: ios swift

所以我的网站上有以下apple-app-site-association,位于stage.domain.com/apple-app-site-association

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.application.id.goes.here",
        "paths": ["*"]
      }
    ]
  }
}

我已将我的关联域设置为applinks:stage.domain.com

但是当我尝试导航到Safari中的stage.domain.com时,它没有注册,我留在浏览器中。还有什么我需要做的吗?我知道我最终需要在应用程序中为各种页面设置路由,但这不是一个必要的要求吗?它应该只是拉起应用程序没有别的?或者我错过了什么?

另外,我的恢复处理程序:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {

    print("DEBUG GETS TO NSURL?")

    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let url = userActivity.webpageURL

        else
    {return false}

    print("DEBUG GETS TO URL")

    return true
}

它既没有调试条件。

4 个答案:

答案 0 :(得分:6)

您是否已完成此处的调试步骤:https://developer.apple.com/library/content/qa/qa1916/_index.html

我发现在上述参考文献的诊断部分的第一步中链接的验证工具非常有用。它将验证您是否正确设置了应用关联文件,如果不这样做,通常会提供一些指导。

更新

根据您在下面关于Safari中无法使用的链接的评论,我建议您验证该域名的通用链接设置是否已在您的测试设备上停用。

具体来说:

  • 如果用户打开一个通用链接并被带到应用程序,状态栏的右上角会有一个快捷方式,如果点击,则会将用户带到链接的Web版本并禁用打开应用程序的通用链接。要重新启用应用的通用链接,您可以将链接粘贴到Notes或消息等应用中,长按它,然后选择&#34;打开... [您的应用]&#34;。< / p>

  • 另一种可能是Safari中的网页试图通过Javascript打开通用链接或包含在重定向中。这些都不会奏效。

此博客文章中有更多详细信息,以及其他一些通用链接问题:https://medium.com/mobile-growth/the-things-i-hate-and-you-should-know-about-apple-universal-links-5beb15f88a29

其他更新:

我怀疑您的情况:当用户直接将通用链接域的URL键入Safari地址栏时,Apple不会触发通用链接。假设用户明确地在Safari地址栏中输入了URL,正确的响应是在Safari中打开URL。在这种情况下,Safari会插入横幅,允许用户有意将应用中的链接打开到页面顶部。

您可以自己测试一下:

  1. 安装Twitter应用
  2. 将网址粘贴到Safari地址栏中的推文中。请注意,它会在浏览器中打开推文页面。使用&#34;打开&#34;点击横幅。链接在页面顶部以在Twitter应用程序中打开它。
  3. 再次打开Safari。现在谷歌这个词&#34;推特&#34;或以其他方式找到一条包含链接到推文的页面(而不是在Safari地址栏中键入或粘贴该网址)
  4. 请注意,点击链接会打开Twitter应用,而不是Safari中的页面。

答案 1 :(得分:2)

如果,当您访问自己的网站时,它会在页面顶部显示通用链接横幅,如下所示:https://i.stack.imgur.com/ZSQGK.jpg,您做得对。

如果单击“打开”,则应打开该应用程序。然后,如果您在通过横幅打开应用程序后尝试单击指向您网站的链接,iOS应该保存您的首选项并直接打开应用程序,而不是使用横幅上的横幅进入Safari。

Universal Linking的工作方式,它不允许在未经用户同意的情况下通过链接打开应用程序。因此,用户必须至少在应用程序自动打开前一次授予权限。

答案 2 :(得分:1)

通常,通用链接以://结尾,因此请尝试使用此URL作为示例: applinks://stage.domain.com

答案 3 :(得分:0)

您是否在应用中尝试了以下代码: info.plist

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>stage</string>
        </array>
    </dict>
</array>

然后打开safari类型“ stage:// ”并按开始。它会将您重定向到您的应用。