如何正确测试通用链接?

fra*_*ite 2 nsurlsession ios-universal-links

我有几个关于通用链接实施的问题。我从 SO/其他来源阅读了很多信息,但问题仍然存在。

\n

首先,我想说我正确配置了项目(添加了权利,添加了对 AppDelegate 的回调),并使用我的团队 id/bundle id 正确配置了 AASA(我有来自其他服务的工作示例)。

\n

问题#1。

\n

根目录仍然是apple-app-site-association (进一步的 AASA)文件的工作位置吗?我如何使用 SWCD 检查它(应该是什么样的消息)?我发现了下一个问题:我们的网站基于 WordPress,将这个文件添加到目录有点问题(我对 WordPress 不熟悉 - 只有我同事的话).well-known。所以我同事就直接把AASA添加到根目录了。但是,通用链接不起作用。我从设备日志中只发现一条有意义的消息:(加载 AASA 文件失败)-

\n
Request for \'<private>\' denied due to HTTP status 404 on route .wk for task AASA-1D53AE3E-9261-413F-B384-20D1DC57B81A { domain: ch\xe2\x80\xa6.dk?mode=developer, bytes: 0, route: .wk }\n
Run Code Online (Sandbox Code Playgroud)\n

似乎 SWCD 尝试从不存在的.well-known目录加载文件(因为 404 错误),但我不明白它是否尝试从根目录加载文件。

\n

另外,我尝试通过 验证器运行我的网站- 但失败了。从这个来源来看- 使用根目录或目录没有区别.well-known- 它们都应该工作。

\n

好吧,我们假设这个验证器是错误的。

\n

问题2。

\n

是否可以100%准确找到问题所在?(iOS 或后端/站点端)

\n

目前尚不清楚https://search.developer.apple.com/appsearch-validation-tool究竟如何工作。例如,我查看了 facebook.com。

\n

Results: Link to Application is passed. Universal = true.

\n

我检查了 instagram.com。

\n

Results: Link to Application - no exact answer. Universal = false.

\n

结果相当模糊。

\n

无论如何,http://instagam.com/apple-app-site-associationhttp://facebook.com/apple-app-site-association都返回有效文件,我确信通用链接正在通过他们的 iOS 工作应用程序。

\n

问题#3。

\n

我在 Postman 中检查了几个 AASA 文件。我注意到我的 AASA 文件不包含content-type标头。Facebook、Instagram 和其他公司的 AASA 文件包含此标头。它们都有不同的值,但它们都会返回响应。这可能是一个问题吗?

\n

问题#4。

\n

还有其他想法吗?我将不胜感激。我认为我的问题是 iOS 系统无法识别我网站上的 AASA 文件。但我现在不知道如何解决它。

\n

小智 5

最好将“apple-app-site-association”文件放在“.well-known”文件夹中。

Branch.io 和 Apple Validator 没用。最好只是验证 json。

使用 iOS 13 版本的“apple-app-site-association”文件。

   {
      "applinks": {
          "apps": [],
          "details": [
            {
              "appID": "ABC1234567.co.app.prod",
              "paths": ["/first/*", "/second/*"]
            },
            {
              "appID": "ABC1234567.com.app.dev",
              "paths": ["/first/*", "/second/*"]
            }
          ]
      }
    }
Run Code Online (Sandbox Code Playgroud)

Apple CDN 缓存“apple-app-site-association”文件数据。测试时使用开发者模式。

<key>com.apple.developer.associated-domains</key>
<array>
    <string>applinks:example.com?mode=developer</string>
</array>
Run Code Online (Sandbox Code Playgroud)

在开发人员模式下,应用程序直接从您的站点获取“apple-app-site-association”文件数据。

要在开发人员模式下在设备上进行测试,请在设置 -> 开发中启用关联域...

上传的“apple-app-site-association”文件应带有标题content-type=application/json.

完成测试后不要忘记禁用开发人员模式。