apple-app-site-association 文件不是从服务器获取而是缓存在苹果?

S. *_*ose 56 ios applinks branch.io ios-universal-links apple-app-site-associate

我们的通用链接已经运行很长时间了。今天我添加了 AASA 文件的路径(我们称之为 sub2)。即使重新安装后,该应用程序也无法识别该路径。

\n

当我调试时,我注意到 applinks 服务正在获取文件,但请求没有进入我们的服务器。该服务确实获取了旧的 AASA 文件,因此苹果的 CDN 似乎正在缓存该文件

\n

调试:

\n
    \n
  • AASA 文件有效:使用Branch Validator以及Apple 的 appsearch-validation-tool中的新 URL 进行测试

    \n
    {\n    "applinks": {\n        "apps": [],\n        "details": [\n            {\n                "appID": "redacted",\n                "paths": [\n                    "/main/*",\n                    "/sub1/*",\n                    "/sub2/*",\n                    "/pagex-*"\n                ]\n            }\n        ]\n    },\n    "activitycontinuation": {\n        "apps": [\n            "redacted"\n        ]\n    }\n}\n
    Run Code Online (Sandbox Code Playgroud)\n
    Apple tool: tested https://redacteddomain/sub2/something\nLink to Application: Passed\nUniversal true\n...\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 文件未缓存在我们这边/Cloudflare:上面的验证器确认了这一点,但为了确保我也清除了缓存

    \n
  • \n
  • Iphone 控制台显示正在获取 AASA 文件:

    \n

    Beginning data task AASA-64DCD3xx-xxxxx { domain: xx\xe2\x80\xa6.xx, bytes: 0, route: cdn }

    \n
  • \n
  • 在 Iphone 上创建了一个 sysdiagnose 文件,它显示 AASA 文件是在这个时间戳获取的,但内容是旧内容:

    \n
    Service:              applinks\nApp ID:               (redacted)\nApp Version:          2.3.4\nApp PI:               <LSPersistentIdentifier 0x101579cc0> { v = 0, t = 0x8, u = 0x11c0, db = 49C449xx-xxxx, {length = 8, bytes = 0xc011000000000000} }\nDomain:               (redacted)\nPatterns:             {"/":"/main/*"}, {"/":"/sub1/*"}, {"/":"/pagex*"}\nUser Approval:        unspecified\nSite/Fmwk Approval:   approved\nFlags:                \nLast Checked:         2021-07-13 18:45:00 +0000\nNext Check:           2021-07-18 18:36:18 +0000\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
\n

Apple 是否有效地缓存了该文件,这是因为我们提供了错误的缓存标头吗?如何测试他们的 CDN,这些网址是公开的还是我可以在日志中找到它们?有没有办法强制清洗他们这边?

\n

更新:\n发现我们可以使用 URL https://app-site-association.cdn-apple.com/a/v1/yourdomain.com直接查询 CDN

\n

=> 此请求返回旧文件,而原始文件(如 Apple-From 标头中所述)较新!\n根据 Age 标头,该文件只有几分钟旧。

\n

UPDATE2 :\n问题终于解决了,我只能猜测CDN缓存现在刷新了。我已经确保我们的服务器现在发送 Cache-Control: no-store 标头,这似乎使 Apple CDN 将其缓存一小时(最大年龄:3600),但在那一小时之后它会被有效刷新。

\n

请注意,在突然的解决方案之前,CDN 返回的文件的年龄只有几分钟,最大年龄为 1800,所以我仍然很不清楚为什么它在服务器文件更新 40 小时后没有提供新内容。

\n

至少对于将来遇到类似问题的人来说,CDN url 是一个非常好的调试起点: https: //app-site-association.cdn-apple.com/a/v1/yourdomain.com

\n

Nik*_*Kov -3

您可以使用调试模式不从 Apple CDN 而是从您的服务器获取 AASA 文件。

applinks:mydomain.com?mode=developer

更多信息:https://github.com/NikKovIos/AASA-Universal-Links-Information/tree/main