已验证Flutter Deep Links,但无法通过网页链接打开应用
Flutter Deep Links 无法触发应用的排查方案
确认
assetlinks.json的实际访问状态- 直接用浏览器访问
https://你的域名/.well-known/assetlinks.json,检查是否能正常返回JSON内容,全程无3xx重定向(Android系统验证该文件时不允许任何重定向,哪怕Google Play控制台显示验证通过,实际系统层面可能因重定向失败) - 用curl命令查看完整响应过程:
curl -v https://你的域名/.well-known/assetlinks.json,重点看是否有重定向、最终HTTP状态码是否为200
- 直接用浏览器访问
修正Laravel路由配置
- Laravel默认会将未匹配的请求导向路由逻辑,若未专门配置
.well-known路径,会被判定为无效路由返回404。最简单的解决方式是绕过Laravel路由:在项目public目录下直接创建.well-known文件夹,将assetlinks.json放入其中,让nginx直接返回静态文件 - 若必须通过Laravel返回,需在
routes/web.php中优先添加路由规则:
确保该路由在Route::get('/.well-known/assetlinks.json', function () { return response()->file(public_path('.well-known/assetlinks.json')); });Route::fallback()等通用路由之前定义
- Laravel默认会将未匹配的请求导向路由逻辑,若未专门配置
调整nginx配置
- 确保nginx优先处理
.well-known路径的静态文件,不转发给PHP-FPM,添加如下规则:location /.well-known { try_files $uri $uri/ =404; } location / { try_files $uri $uri/ /index.php?$query_string; } - 检查HTTPS重定向规则,避免
http://请求被强制重定向到https://——需保证assetlinks.json的初始请求就是HTTPS,无跳转过程
- 确保nginx优先处理
验证浏览器触发逻辑
- 清除浏览器缓存后再测试(部分浏览器会缓存Deep Link验证结果)
- 确保HTML中的链接为HTTPS协议(Android App Links仅支持HTTPS),格式为
https://你的域名/xxx - 不要用本地
file://协议的HTML文件测试,需将HTML部署到服务器后访问
二次核对AndroidManifest配置
- 确认intent-filter中已添加
android:autoVerify="true",且host、scheme配置正确:<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="你的域名" /> </intent-filter> - 核对
assetlinks.json中的SHA-256签名指纹,与应用签名完全一致(注意大小写、无多余空格)
- 确认intent-filter中已添加
内容的提问来源于stack exchange,提问作者Lochinvar
相关产品推荐
相关产品推荐

