Ios 尝试使用通用链接设置重定向到应用程序,但未发生任何操作

Ios 尝试使用通用链接设置重定向到应用程序,但未发生任何操作,ios,swift,Ios,Swift,因此,我的网站上有以下苹果应用程序网站关联,位于stage.domain.com/apple-app-site-association: { "applinks": { "apps": [], "details": [ { "appID": "TEAMID.application.id.goes.here", "paths": ["*"] } ] } } 我已将关联域设置为applinks:stage.do

因此,我的网站上有以下苹果应用程序网站关联,位于
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
}

这两种调试条件都没有达到。

您是否已经完成了此处的调试步骤:

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

更新: 根据您在下面关于Safari中链接不起作用的评论,我建议验证您在测试设备上没有禁用该域的通用链接设置

具体而言:

  • 如果用户打开一个通用链接并被带到应用程序,则状态栏右上角会有一个快捷方式,如果点击该快捷方式,则会将用户带到链接的web版本,并禁用打开应用程序的通用链接。要重新启用应用程序的通用链接,您可以将链接粘贴到应用程序(如Notes或Messages)中,长按该链接,然后选择“在…[您的应用程序]中打开”

  • 另一种可能性是,Safari中的网页试图通过Javascript打开通用链接,或者用重定向包装。这两种方法都行不通

这篇博文中有更多详细信息,以及一些其他通用链接问题:

其他更新: 我怀疑你的情况:当用户直接在Safari地址栏中键入指向通用链接域的URL时,苹果不会触发通用链接。假设用户在Safari地址栏中显式输入URL,正确的响应是在Safari中打开URL。在这种情况下,Safari会插入横幅,允许用户故意打开应用程序中指向页面顶部的链接

您可以自己进行测试:

  • 安装Twitter应用程序
  • 将URL粘贴到Safari地址栏中的tweet。请注意,它会在浏览器中打开tweet页面。点击页面顶部带有“打开”链接的横幅,在Twitter应用程序中打开它
  • 再次打开Safari。现在,用谷歌搜索“tweet”一词或以其他方式找到一个有tweet链接的页面(而不是在Safari地址栏中键入或粘贴URL)
  • 请注意,点击链接将打开Twitter应用程序,而不是Safari中的页面
    通常通用链接以
    ://
    结尾,因此请尝试使用以下URL作为示例:
    applinks://stage.domain.com

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

    CbundleUrlTypes
    CbundleTypeRole
    编辑
    循环流化床锅炉方案
    阶段
    

    然后打开safari,键入“stage://”并按Go。它会将你重定向到你的应用程序。

    如果当你访问你的网站时,它会在页面顶部显示“通用链接”横幅,如下图所示:,那么你就做对了

    如果您单击“打开”,它将打开应用程序。然后,如果您试图在通过横幅打开应用程序后单击指向您网站的链接,iOS应该保存您的首选项并直接打开应用程序,而不是带着横幅前往Safari


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

    是的,我使用过它。它说我的权利没有设置,即使它们绝对是。它们被添加到Apple Developer中的我的应用程序ID以及我的关联域部分,在那里我有applinks:stage.domain.com,它目前在最新的应用程序版本中也很活跃。当我在电子邮件中单击它时,该应用程序工作正常。“但它在Safari中不起作用。”安德烈瓦莱桑德用一些额外的可能性更新了答案不,这似乎不起作用。电子邮件部分可以工作,就像在notes上单击它一样,但是尝试在Safari中单击链接并不会启动应用程序。好的,实际上,这是因为如果你在同一个域中执行此操作,它会在Safari中打开它,而不是在应用程序中。它会让用户选择一个提示,告诉他们返回应用程序。我不想那样。我以前尝试过URL方案。您的apple应用程序站点关联文件是否上载到HTTPS服务器的根目录?您确定吗?TomsiMac:~tom$curl 404错误-找不到页面…我尝试了url架构,但url删除了://chars。有解决办法吗?你确定吗?例如,看看这张图片:当你访问你的网站时,它是否会在页面顶部显示“通用链接”横幅?像这样:是的。我确实看到了那条横幅。为什么,这意味着什么?那么,你做得对。如果您单击“打开”,它将打开应用程序。然后,如果您试图在通过横幅打开应用程序后单击指向您网站的链接,iOS应保存您的首选项并直接打开应用程序,而不是带着横幅前往Safari。通用链接的工作方式是,未经用户同意,不允许通过链接打开应用程序。因此,在应用程序自动打开之前,用户必须至少给予一次权限。事实上,这不是工作原理。外部链接工作正常,内部链接不工作。
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>stage</string>
            </array>
        </dict>
    </array>