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

如何在Flutter中通过Branch.io获取App安装后的深度链接数据?

可行性确认

完全可行,Branch.io原生支持**延迟深度链接(Deferred Deep Linking)**场景——用户未安装应用时点击链接跳转应用商店,安装完成首次启动后,能获取到原链接携带的所有自定义参数(包括你需要的openId)。

具体实现步骤

假设你使用的是Flutter社区常用的branch_io插件,按以下步骤操作:

1. 核对基础配置(避免遗漏)

虽然你已完成基础配置,再确认以下关键项:

  • iOS:在Info.plist中配置Associated Domains,格式为applinks:<你的Branch域名>(例如applinks:your-app.app.link);确保LSApplicationQueriesSchemes包含itms-apps和branch。
  • Android:在AndroidManifest.xml中配置正确的Intent Filter,关联你的Branch域名和自定义Scheme;确保添加了含Branch Key的Meta Data。

2. Flutter端代码实现

2.1 添加插件依赖

在pubspec.yaml中添加依赖:

dependencies:
  branch_io: ^latest_version # 替换为插件最新版本号

2.2 初始化并获取延迟链接数据

在应用启动的最早期阶段(比如main函数)完成Branch初始化,通过getInitialLink方法获取链接数据——这个方法同时覆盖「已安装应用时打开链接」和「安装后首次启动获取延迟链接」两种场景:

import 'package:flutter/material.dart';
import 'package:branch_io/branch_io.dart';

void main() async {
  // 初始化Flutter绑定
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化Branch,替换为你的Branch Key
  await BranchIO.init('YOUR_BRANCH_KEY');

  // 获取初始链接数据(包含延迟深度链接)
  final branchLinkData = await BranchIO.getInitialLink();

  if (branchLinkData != null) {
    // 解析自定义参数openId
    final openId = branchLinkData.data['openId'];
    if (openId != null) {
      // 这里处理openId逻辑:比如跳转指定页面、存入本地存储等
      debugPrint('获取到openId: $openId');
    }
  }

  runApp(const MyApp());
}

2.3 可选:监听应用运行时的链接跳转

如果需要处理应用在前台/后台时点击链接的场景,可添加流监听:

// 在StatefulWidget的initState中添加
@override
void initState() {
  super.initState();
  BranchIO.linkStream.listen((linkData) {
    final openId = linkData.data['openId'];
    if (openId != null) {
      // 处理运行时的链接参数
    }
  });
}
测试注意事项
  • 必须使用真实设备测试:模拟器无法完整模拟「跳转应用商店-安装-首次启动」的流程。
  • 使用Branch官方生成的测试链接:在Branch仪表盘创建测试链接,通过短信/邮件发送到测试设备,点击后完成安装启动流程,验证是否能获取到openId。
  • 避免直接复制链接到浏览器打开:部分浏览器可能无法正确触发Branch的延迟链接逻辑,建议用系统自带的短信/邮件应用点击链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:25:21