iOS 15不遵守apple-app-site-association配置的应用匹配顺序问题
问题原因
iOS 15对Universal Link的匹配逻辑做了不兼容调整:
- iOS 14及更早版本:默认按照
apple-app-site-association文件中details数组的排列顺序匹配,第一个命中路径规则的应用获得链接处理权 - iOS 15及以上版本:默认按路径覆盖范围排序,通配符覆盖范围越大的规则优先级越高,原有的数组排列顺序不再作为默认判断依据。你当前配置中
OrderAnythingApp的/*是覆盖范围最宽的规则,因此会优先拿到burrito类链接的处理权;移除该应用配置后,覆盖范围次大的FoodApp就会成为优先匹配项。
解决方法
你可以任选以下两种方案修复该问题:
方案1:沿用旧版本的数组顺序匹配逻辑
直接在AASA文件的applinks节点下添加匹配规则配置,指定按文件排列顺序优先匹配即可。该配置对iOS 14及更早版本无影响,旧系统会自动忽略不识别的字段,不会干扰原有逻辑。
修改后的完整AASA文件内容如下:
{ "applinks": { "apps": [], "matching": { "order": "file" }, "details": [ { "appID": "AAAAA.com.mydomain.BurritoApp", "paths": [ "/burritos/*" ] }, { "appID": "AAAAA.com.mydomain.FoodApp", "paths": [ "/burritos/*", "/tacos/*", "/deli/*" ] }, { "appID": "AAAAA.com.mydomain.OrderAnythingApp", "paths": [ "/*" ] } ] } }
方案2:给宽泛路径的应用添加排除规则
如果你不想调整全局匹配规则,也可以通过NOT指令给路径覆盖范围大的应用配置排除项,避免它们抢特定路径的处理权:
- 给
FoodApp的路径规则添加burrito路径排除,修改为:"paths": [ "NOT /burritos/*", "/tacos/*", "/deli/*" ] - 给
OrderAnythingApp的路径规则添加burrito、taco、deli路径排除,修改为:"paths": [ "NOT /burritos/*", "NOT /tacos/*", "NOT /deli/*", "/*" ]
修改完成后更新服务器上的AASA文件,触发设备重新拉取配置即可生效。
内容的提问来源于stack exchange,提问作者Vlad Grigorov
相关产品推荐
相关产品推荐

