某些域未下载应用关联文件

问题描述

指向我们应用的通用链接目前仅适用于指向我们演示和登台环境的 URL,而不适用于我们的生产环境。

例如,指向 https://app.myCompany.com/events/1链接不起作用,但 https://app.myCompany-staging.com/events/1 起作用。

我查看了环境之间的配置,它们看起来相同,所以我有点不明白为什么会发生这种情况。

我检查了 XCode 项目中的关联域和权利配置,它们看起来不错并指向正确的域:

        <string>applinks:*.myCompany-staging.com</string>
        <string>applinks:*.myCompany.com</string>
        <string>applinks:*.myCompany-demo.com</string>

staging 和 production 之间的应用关联文件看起来也一样,所以应该没有配置问题:

{
  "applinks": {
    "apps":[],"details":[
      {
        "appID":"teamID.bundleId","paths":["/ios/auth","/event_checkin_landing_page","/events/*","/career_fairs/*","/conversations/*","/jobs/*","/schools/*","/meetings/*/video","/video_sessions/*","/interview_schedules/*/public_invite"]
      }
    ]
  }
}

Branch’s ASAA validator 也确定这些文件没有问题。

Apple’s Link Validation tool 似乎确实向应用程序返回了一个缺失的错误。但它返回了暂存和生产的错误,这让人感觉有点误报。

Validation Image

当应用安装在新设备上时,最大的线索似乎是查看设备日志。似乎无论何时安装应用程序,操作系统都会从每个关联的域下载 AASA 文件,并将它们缓存在自己的 CDN 中(也可能在设备上)。这似乎适用于演示和暂存相关 URL,但由于某些原因不适用于美国和英国的生产 URL。

以下是我在控制台中收到的成功消息与失败的示例:

  • 成功:

成功获得挑战的凭证 任务 AASA-FFCCC66E-AC04-476A-A27F-8F6BE692E04C { domain: *.myCompany-staging.com,bytes: 0,route: cdn }

  • 失败:

请求“https://app-site-association.cdn-apple.com/a/v1/myCompany.com”用于任务 AASA-FF1CF14E-4A11-4320-8398-93379D6CF5F0 { domain: *.myCompany. com,route: cdn } 被拒绝,因为 CDN 告诉我们停止 HTTP 状态 404: SWCERR00101 Bad HTTP Response: 404 Not Found -- {"status":"404 Not Found"}

Task . 完成时出现错误 [-999] Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLStringKey=https://app-site-association.cdn-apple.com/a/v1 /myCompany.com,NSErrorFailingURLKey=https://app-site-association.cdn-apple.com/a/v1/myCompany.com,_NSURLErrorRelatedURLSessionTaskErrorKey=( “本地数据任务 .” ),_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask .,NSLocalizedDescription=cancelled}

这似乎是一个与 HTTP 请求相关的错误,所以我检查了一下,看起来我能够从谷歌云日志(200 个代码)中看到苹果操作系统试图获取 AAA 文件的成功消息,所以这不会好像不是这样。

任何想法或建议将不胜感激!

解决方法

经过一些调试后,我们发现我们在子域 (https://app.myCompany.com) 而不是标准站点 (https://www.myCompany.com) 中托管生产文件。

当我们将生产文件移到那里时,我能够验证 iOS 是否能够提取文件并将其存储在 https://app-site-association.cdn-apple.com/a/v1/myCompany.com 的 CDN 中