Apple AASA文件JSON验证通过却无法跳转,请求排查SWCERR00401错误
排查AASA文件无法触发Universal Link跳转的问题
核心问题定位
从Apple CDN返回的错误SWCERR00401 Bad JSON content和invalid character '/' looking for beginning of value可以确定,你的AASA文件包含JSON规范不允许的单行注释。
虽然部分第三方JSON验证器会忽略注释内容,但Apple的SWC(Smart App Banners)解析器严格遵循RFC 8259标准,不支持任何形式的注释(单行//或多行/* */)。你文件里的//example就是触发错误的直接原因。
修复步骤
移除非法注释内容:删除AASA文件中的
//example,同时将appclips下空行的apps数组简化为"apps": [],避免空行可能引发的解析异常。
修复后的AASA内容:{ "applinks": { "details": [ { "appIDs": [ "teamID.com.app.menu" ], "components": [ { "/": "/*", "comment": "Matches any URL whose path starts with /" }, { "/": "/contact-us/*", "exclude": true, "comment": "Matches any URL whose path starts with /contact-us/ and instructs the system not to open it as a universal link" } ] } ] }, "appclips": { "apps": [] } }注意:
comment是Apple允许的合法字段,不属于JSON注释范畴,可以正常保留。重新执行验证:
- 使用严格模式的JSON校验工具确认文件无语法错误
- 再次运行Apple CDN验证命令:
正常情况下会返回200状态码及你的AASA文件内容。curl -v https://app-site-association.cdn-apple.com/a/v1/yourdomain.com
等待缓存更新:Apple会缓存AASA文件,修复后可能需要15分钟到24小时生效。可以通过以下方式加速测试:
- 卸载并重装App
- 在Safari中访问域名下任意链接,长按选择"在[你的App]中打开"(出现该选项即说明缓存已更新)
模拟器特定模式可跳转的说明
你开启的是Universal Links调试模式,该模式会绕过Apple CDN的缓存和严格校验,直接从你的服务器拉取AASA文件,因此即使文件存在注释也能解析,但真机和正式环境会严格依赖Apple CDN的校验结果。
内容的提问来源于stack exchange,提问作者Sukesh
相关产品推荐
相关产品推荐

