Android端Firebase动态链接先启浏览器再开应用问题求助
Firebase动态链接先跳浏览器再启动应用的排查方案
核心排查与修复步骤
1. 修复链接的URL编码问题
你的链接中link参数内部包含?和&,这些字符未编码会被解析为顶层链接的参数,导致Firebase无法正确识别深层链接规则,触发浏览器跳转。必须对link参数的值做URL编码:
- 原错误格式(示例):
https://my_subdomain.page.link?link=https://my_subdomain.page.link/app1?param1=aaa¶m2=bbb&apn=app1_package_name - 编码后正确格式(示例):
关键编码映射:https://my_subdomain.page.link?link=https%3A%2F%2Fmy_subdomain.page.link%2Fapp1%3Fparam1%3Daaa%26param2%3Dbbb&apn=app1_package_name:→%3A,/→%2F,?→%3F,&→%26,=→%3D。
2. 验证App Links配置完整性
(1)Firebase控制台与assetlinks.json验证
- 确保三个构建变体的包名已添加到Firebase控制台的动态链接项目中,且每个包名对应的SHA-256指纹正确配置。
- 确认
https://my_subdomain.page.link/.well-known/assetlinks.json文件已部署,文件需包含三个包名的验证信息,示例格式:[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "app1_package_name", "sha256_cert_fingerprints": ["你的SHA-256指纹"] } }, { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "app2_package_name", "sha256_cert_fingerprints": ["你的SHA-256指纹"] } }, { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "app3_package_name", "sha256_cert_fingerprints": ["你的SHA-256指纹"] } } ]
(2)AndroidManifest配置检查
每个构建变体的目标Activity必须添加正确的intent-filter,且开启自动验证:
<activity android:name=".YourTargetActivity"> <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" /> <!-- 对应每个变体的pathPrefix --> <data android:scheme="https" android:host="my_subdomain.page.link" android:pathPrefix="/app1" /> </intent-filter> </activity>
- 确保
android:autoVerify="true"存在,系统会自动验证App Links权限,无需用户手动选择打开方式。
3. 确认Firebase动态链接规则设置
- 在Firebase控制台创建动态链接时,勾选**"直接打开应用(如果已安装)"**选项;手动构造链接时,确保
apn参数正确对应变体包名,且无冲突参数覆盖规则。 - 避免使用测试模式链接(测试模式会跳过部分验证逻辑,仅用于开发调试)。
4. 本地测试与系统设置排查
- 使用ADB命令直接测试链接,排除系统默认设置干扰:
如果命令能直接打开应用,说明链接本身无问题,需检查系统默认打开方式(在应用设置中清除默认启动选项)。adb shell am start -a android.intent.action.VIEW -d "你的编码后链接" - 针对Android 6.0以下系统,App Links自动验证不生效,会出现跳转浏览器的情况,这是系统限制,无需额外处理。
内容的提问来源于stack exchange,提问作者Tam Nguyen
相关产品推荐
相关产品推荐

