You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Firebase Dynamic Link无法正确获取query参数问题

无法从Firebase动态链接中获取query参数的问题解决

核心问题原因

你在创建动态链接时,错误地将Firebase短链接(https://example.page.link/zEgN?student=test)作为DynamicLinkParameters的link参数。Firebase动态链接的link字段需要传入你的业务自定义深度链接(而非Firebase生成的短链接),否则query参数会被Firebase的链接解析逻辑过滤,导致无法正确获取。

修正后的代码实现

1. 正确创建动态链接

String uriPrefix = 'https://example.page.link';
Future<String> createDynamicLink() async {
  // 替换为你的业务自定义深度链接,而非Firebase短链接
  String appLink = 'https://yourapp.com/student?student=test';
  final DynamicLinkParameters parameters = DynamicLinkParameters(
      link: Uri.parse(appLink),
      uriPrefix: uriPrefix,
      androidParameters:
          AndroidParameters(packageName: '你的实际应用包名'));

  final FirebaseDynamicLinks link = FirebaseDynamicLinks.instance;
  final refLink = await link.buildLink(parameters);

  return refLink.toString();
}

2. 简化并优化动态链接监听逻辑

Future<void> initDynamicLink() async {
  // 处理应用冷启动时的动态链接
  final PendingDynamicLinkData? initialLink =
      await FirebaseDynamicLinks.instance.getInitialLink();
  if (initialLink != null) {
    _processDeepLink(initialLink.link);
  }

  // 处理应用后台运行时的动态链接
  FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
    _processDeepLink(dynamicLinkData.link);
  });
}

void _processDeepLink(Uri deepLink) {
  print("深度链接完整地址: ${deepLink.toString()}");
  String? studentParam = deepLink.queryParameters['student'];
  print("student参数值: ${studentParam ?? '未获取到'}");
  // 在这里编写参数的业务处理逻辑
}

额外排查要点

  • 确认Firebase控制台中,动态链接的「深度链接」配置已添加你的业务域名(如上述示例中的https://yourapp.com)作为合法来源
  • 测试时必须使用修正代码后新生成的动态链接,避免使用之前错误生成的旧链接
  • 检查AndroidManifest.xml中的intent-filter配置,确保已正确注册动态链接的接收规则

内容的提问来源于stack exchange,提问作者Mohamed Abo Zeid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:26:24