iOS Universal Links路径区分求助:如何区分带参与不带参详情路径?
解决iOS Universal Links区分路径的问题
我太懂你遇到的这个坑了——Universal Links的路径匹配规则确实有点反直觉,核心问题在于它会完全忽略URL里的查询参数,这就导致你之前写的NOT /details?search=*根本起不到预期作用。系统匹配时会直接砍掉?search=xxx这部分,相当于你在排除所有/details开头的路径,自然所有相关链接都打不开了。
要区分/details/123567和/details?search=123456,关键要抓住两者路径结构的本质差异:前者的路径是/details/xxx(带后续斜杠和子路径),后者的实际匹配路径是/details(没有后续斜杠,查询参数被直接忽略)。
所以正确的paths配置应该是这样:
{ "applinks": { "apps": [], "details": [ { "appID": "a.b.c", "paths": [ "NOT /details", "/details/*" ] } ] } }
配置逻辑拆解:
NOT /details:排除那些路径**正好等于/details**的请求(也就是你要忽略的/details?search=123456这类链接,因为它们的路径部分本质就是/details)。/details/*:匹配所有以/details/开头的子路径(比如/details/123567,这正是你想在App中打开的目标链接)。
这样配置后,系统就能精准区分两种路径:带斜杠的详情链接会被引导到App内打开,而带查询参数的根详情链接则会被忽略,直接在浏览器中加载。
你可以在Xcode的关联域名设置里确认配置正确性,或者直接在设备上测试两种链接,验证效果是否符合预期。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

