【问题标题】:Universal Link is not working on properly on iOS 13 (AASA not downloaded)Universal Link 在 iOS 13 上无法正常工作(未下载 AASA)
【发布时间】:2020-01-27 00:23:13
【问题描述】:

Universal Link 在 iOS 12 上运行良好,但我昨天更新到 iOS 13.1 时遇到了问题。应该在点击时打开应用程序的 URL 只是在浏览器中打开。 iOS 13 上的一些用户报告了同样的事情。

同样,我在 iOS 12.4 上从未遇到过这个问题

我认为 AASA 文件没有正确下载。 当我登陆我的一个网址时,我尝试从出现在 Safari 顶部的横幅中点击 Open。这没有帮助。

有时重新安装和重新启动几次后它可以正常工作,但是当您再次重新安装时它停止工作。

我发现这篇博文https://ios13.dev/universal-links-debugging-on-ios-13-cjwsux93w001p6ws1swtstmzc 其中描述了查看日志。

我导出了 sysdiagnose,我的 swcutil_show.txt 为我的应用显示了这个

Service:              applinks
App ID:               (my app ID)
App Version:          102
Domain:               (app.myurl.com)
User Approval:        unspecified
Site/Fmwk Approval:   unspecified
Flags:                
Last Checked:         2019-09-26 00:48:24 +0000
Next Check:           2019-09-30 23:51:38 +0000

而其他应用看起来像这样

Service:              applinks
App ID:               ZL6BUSYGB3.com.apple.news
App Version:          2300.5
Domain:               news.apple.com
Patterns:             {"/":"*"}
User Approval:        unspecified
Site/Fmwk Approval:   approved
Flags:                systemApplication
Last Checked:         2019-09-25 18:45:50 +0000
Next Check:           2019-09-30 17:49:04 +0000

由于某种原因,它缺少 Patterns(来自 AASA),而 Site/Fmwk Approvalunspecified

我还尝试在通用链接在多次重新安装和重新启动后正常工作时导出 sysdiagnose。我的应用确实为PatternsSite/Fmwk Approval approved 提供了一些东西

有没有人在 iOS 13 上遇到过类似的问题? 任何帮助都非常感谢

【问题讨论】:

  • 我在我们的应用中看到了同样的问题。还没有解决方案。
  • 即使在 13.1.2 也遇到同样的问题,有什么想法吗?
  • 我在 13.3 上看到了问题...
  • 在 13.2.3 上也一样 .. 啊!什么时候修复?

标签: ios ios-universal-links apple-app-site-associate


【解决方案1】:

似乎对于 ios13,apple-site-app-association 为 new format

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app", "ABCDE12345.com.example.app2" ],
             "components": [
               {
                  "#": "no_universal_links",
                  "exclude": true,
                  "comment": "Matches any URL whose fragment equals no_universal_links and instructs the system not to open it as a universal link"
               },
               {
                  "/": "/buy/*",
                  "comment": "Matches any URL whose path starts with /buy/"
               },
               {
                  "/": "/help/website/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /help/website/ and instructs the system not to open it as a universal link"
               }
               {
                  "/": "/help/*",
                  "?": { "articleNumber": "????" },
                  "comment": "Matches any URL whose path starts with /help/ and which has a query item with name 'articleNumber' and a value of exactly 4 characters"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}

【讨论】:

  • 如果您像这样更新,它适用于 iOS 13,但不再适用于 iOS 12。
  • @user1007522 好点,我会更新答案,以便它适用于两个版本
  • 第二个示例仅适用于 iOS 13,不适用于 iOS 12。有关正确语法,请参阅 Sylvain Gravel 的答案。
  • @nauke。看来你是对的。我删除了它,只留下了 iOS 13 的答案
  • @KevinAmiranoff,由于某种原因,sysdiagnose 文件没有在一台设备上显示我的应用程序的应用链接,而在其他设备上显示。设备不会在 swcutil_show.txt 的内存使用情况或文件的数据库部分中显示应用程序。我正在对通用链接 AASA 下载进行故障排除。
【解决方案2】:

经过大量测试,我发现以下格式适用于 iOS12 和 iOS13。 iOS12,绝对要求每个details 字典条目包含appIDpaths 参数才能正常工作。另一方面,iOS13 期望第一个条目同时包含 appIDscomponents。这意味着第一个条目绝对需要包含所有 4 个参数,以支持自动填充(带有保存密码提示)和通用链接两个平台。

具有讽刺意味的是,这种格式没有通过 Apple App Search API 验证工具,但它确实适用于 Branch one……FTS!另请注意,在不同的 VC 上使用您的用户名和密码 UITextField 不起作用(您不会收到保存密码提示)。我必须在我们的密码屏幕上添加一个“假”用户名 UITextField,以便它被操作系统拾取并且不要隐藏它,也不要将其宽度或高度设为 0px(所以基本上让它的大小为 1x1px,带有清晰的文本和背景以及填写您在之前 VC 中的用户名)。

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appIDs": [ "ABCDE12345.com.domain.app", "ABCDE12345.com.domain.app2" ],
        "appID": "ABCDE12345.com.domain.app",
        "components": [
          {
            "/": "/documentationsucksforios13",
            "comment": "This documentation is awful"
          }
        ],
        "paths": [ "/documentationsucksforios12" ]
      },
      {
        "appID": "ABCDE12345.com.domain.app2",
        "paths": [ "/validationtoolsdontwork" ]
      }
    ]
  },
  "webcredentials": {
    "apps": [ "ABCDE12345.com.domain.app" ]
  }
}

【讨论】:

  • 我即将在我的应用程序上尝试类似的东西。为什么要在 ios13 定义旁边包含 "appID": "ABCDE12345.com.domain.app" 和 "paths": [ "/documentationsucksforios12" ],而不是像使用 "appID" 那样作为 details 数组中的不同元素: "ABCDE12345.com.domain.app2"?
  • 我的测试表明,如果第一个元素不包含两者,则它在 iOS13 或 iOS12 上都不起作用,具体取决于您取出哪个。
  • 这必须是一个例外的答案:它适用于 iOS12 和 iOS13。
  • 我有“路径”:[“*”]。有人可以帮助我如何用组件编写它,以便对于每个域 url 链接,它都应该打开应用程序?
【解决方案3】:

尝试打开设置 > Safari > 请求桌面网站 > 所有网站 > 关闭。

这个问题在 iPad 上更常见,因为在大屏幕而不是小屏幕上显示桌面网站更有意义。

来自苹果开发者论坛。

它解决了我的问题,太好了

【讨论】:

  • 该答案与问题没有任何形式的关联。
【解决方案4】:

我只在 iOS 13 上遇到了同样的问题,结果发现,从 iOS 13 开始,appID 条目现在区分大小写。我的应用程序包标识符和 AASA 文件的 appID 中的条目仅在大小写中不匹配。示例:

捆绑 ID:TEAMID.com.company.EXAMPLE AASA 条目:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.com.company.example",
        "paths": [ "*" ]
      }...

需要修复 AASA 文件中的 appID,我的问题就解决了。

【讨论】:

    【解决方案5】:

    我们遇到了类似的问题。升级到 iOS 13.1.2 后,它现在似乎可以正常工作了。所以苹果很可能最终解决了这个错误。

    【讨论】:

    • 即使在 13.1.2 也遇到同样的问题,有什么想法吗?
    • iOS 13.1.3 - 问题仍然存在
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 2022-09-28
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多