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

如何使用Firebase Dynamic Links导航至App指定页面并传递参数?

完全可以通过Firebase Dynamic Links传递参数,下面结合你的应用结构(首页+3个产品子页面),给出具体实现步骤:

一、创建带参数的动态链接

不管是通过Firebase控制台手动创建,还是通过代码生成,都能给动态链接附加参数:

1. 控制台手动创建

在Firebase控制台的Dynamic Links页面,设置深层链接时,直接在链接后拼接参数,比如:
https://yourapp.com/product?id=1(对应Product 1)、https://yourapp.com/product?id=2(对应Product 2)
后续生成的动态链接会自动携带这些参数,用户点击后会传递到你的应用。

2. 代码生成(以Flutter为例)

使用firebase_dynamic_links包,生成带参数的动态链接:

final dynamicLinkParams = DynamicLinkParameters(
  uriPrefix: 'https://yourapp.page.link', // 你的Dynamic Links前缀
  link: Uri.parse('https://yourapp.com/product?id=3'), // 带参数的深层链接
  androidParameters: const AndroidParameters(
    packageName: 'com.yourapp.package',
    minimumVersion: 1,
  ),
  iosParameters: const IOSParameters(
    bundleId: 'com.yourapp.package',
    minimumVersion: '1.0',
  ),
);

final dynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
final shareableLink = dynamicLink.shortUrl.toString(); // 可分享的短链接

二、解析链接并导航到指定页面

在应用启动时监听动态链接,解析参数后路由到对应页面:

1. 监听动态链接(处理冷/热启动)

// 处理冷启动时的链接
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
  _handleDynamicLink(initialLink.link);
}

// 处理应用运行时的链接(热启动)
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  _handleDynamicLink(dynamicLinkData.link);
}).onError((error) {
  // 处理链接解析错误
});

2. 解析参数并跳转页面

void _handleDynamicLink(Uri deepLink) {
  final productId = deepLink.queryParameters['id'];
  
  if (productId != null) {
    // 根据参数跳转到对应产品子页面
    switch(productId) {
      case '1':
        Navigator.push(context, MaterialPageRoute(builder: (_) => Product1Screen()));
        break;
      case '2':
        Navigator.push(context, MaterialPageRoute(builder: (_) => Product2Screen()));
        break;
      case '3':
        Navigator.push(context, MaterialPageRoute(builder: (_) => Product3Screen()));
        break;
      default:
        _navigateToHome();
    }
  } else {
    _navigateToHome();
  }
}

void _navigateToHome() {
  Navigator.push(context, MaterialPageRoute(builder: (_) => HomeScreen()));
}

注意事项

  • 确保你在Firebase控制台配置了正确的深层链接域名,并在应用中完成了Dynamic Links SDK的集成。
  • 不同平台(Android/iOS)的配置略有差异,比如Android需要在AndroidManifest.xml中配置intent-filter,iOS需要在Info.plist中设置关联域名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:15:35