Flutter中Firebase动态链接读取参数异常问题
Firebase动态链接参数丢失解决办法
问题原因
你直接在Firebase短链接后拼接?id=ABCDEFG的方式不被官方支持,Firebase动态链接的参数需要配置在**深层链接(Deep Link)**中,而非短链接本身。短链接只是跳转入口,真正的参数逻辑绑定在深层链接里。
正确解决方案
1. 重新生成带参数的动态链接
不管是通过Firebase控制台还是代码创建,都要把参数放到深层链接中:
- 控制台创建:在「深层链接」输入框填写带参数的链接(比如
https://yourapp.com/r?id=ABCDEFG),再生成短链接。 - 代码创建:设置
DynamicLinkParameters的link字段为带参数的深层链接,示例:final dynamicLinkParams = DynamicLinkParameters( uriPrefix: 'https://xyz.page.link', link: Uri.parse('https://yourapp.com/r?id=ABCDEFG'), // 这里放带参数的深层链接 androidParameters: const AndroidParameters( packageName: 'com.your.app.package', // 替换成你的安卓包名 ), iosParameters: const IOSParameters( bundleId: 'com.your.app.bundle', // 替换成你的iOS Bundle ID ), ); final shortLink = await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams); print(shortLink.shortUrl); // 生成的有效短链接
2. 正确读取参数
不要直接把data.link转成字符串拆分,直接通过Uri的queryParameters获取参数:
PendingDynamicLinkData? data = await FirebaseDynamicLinks.instance.getInitialLink(); if (data != null) { Uri deepLink = data.link; String? id = deepLink.queryParameters['id']; // 直接拿到ABCDEFG print(id); }
3. 额外排查点
- 确认深层链接的域名已在Firebase控制台「动态链接」设置中完成验证。
- 测试时不要直接手动修改短链接,必须使用官方生成的包含深层链接参数的短链接。
内容的提问来源于stack exchange,提问作者Gulshan Yadav
相关产品推荐
相关产品推荐

