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

Firebase动态链接问题:生成时传入的id参数无法被获取

Firebase动态链接传递query参数id后无法获取的解决方案

问题描述

生成Firebase动态链接时,已在link字段的URL中拼接?id=$docId参数,但接收动态链接时,dynamicLinkData.link.queryParameters中找不到id参数,返回空或null映射。

解决方案

1. 改用Firebase官方推荐的参数传递方式

直接拼接URL参数可能被动态链接的重写规则过滤,建议使用DynamicLinkParameters的parameters字段传递参数,确保参数被正确保留:

buildDynamicLinks(String title, String image, String docId) async {
  final dynamicLinkParams = DynamicLinkParameters(
    link: Uri.parse("https://www.infusiblecoder.com/"),
    uriPrefix: "https://darwishkhan.page.link/fanspot",
    // 通过parameters字段传递参数
    parameters: {
      'id': docId,
    },
    androidParameters: const AndroidParameters(
      packageName: "com.example.fanspot",
      minimumVersion: 30,
    ),
    iosParameters: const IOSParameters(
      bundleId: "com.example.app.ios",
      appStoreId: "123456789",
      minimumVersion: "1.0.1",
    ),
    navigationInfoParameters:
        NavigationInfoParameters(forcedRedirectEnabled: true),
    socialMetaTagParameters: SocialMetaTagParameters(
        description: '', imageUrl: Uri.parse(image), title: title),
  );
  final dynamicLink =
      await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);
  print(dynamicLink);
  Share.share(dynamicLink.toString(), subject: 'Checkout this venue!!');
}

接收端代码无需修改,依然通过queryParameters获取id即可。

2. 检查Firebase控制台的动态链接配置

进入Firebase控制台的动态链接模块,找到对应URI前缀(https://darwishkhan.page.link/fanspot)的配置,检查高级选项中是否存在参数过滤或重写规则,确保id参数没有被移除。

3. 打印完整链接排查问题

在接收代码中添加日志,打印完整的动态链接和参数,定位问题环节:

FirebaseDynamicLinks.instance.onLink
    .listen((PendingDynamicLinkData dynamicLinkData) async {
  print("完整动态链接: ${dynamicLinkData.link.toString()}");
  print("所有Query参数: ${dynamicLinkData.link.queryParameters}");
  
  if (dynamicLinkData.link.queryParameters.containsKey('id')) {
    String? id = dynamicLinkData.link.queryParameters['id'];
    NavigationHelper.pushRoute(navigatorKey.currentContext!,
        VenuesDetailsView(venueID: id.toString(), index: 0));
  }
}).onError((error) {
  print("动态链接错误: $error");
});

通过日志可以确认:生成的链接是否包含id参数,接收时参数是否丢失。

4. 验证生成的动态链接有效性

复制生成后打印的动态链接,在浏览器中打开,检查跳转后的目标URL是否包含?id=xxx参数;也可使用Firebase控制台的动态链接调试工具验证链接结构是否正确。

内容的提问来源于stack exchange,提问作者Ali Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:10:32