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

React Native中Branch.IO集成SendGrid时Deep Link参数为空问题

解决Branch.IO + SendGrid集成后深度链接参数丢失问题

从你的描述来看,单独用Branch时深度链接参数能正常传递,但接入SendGrid做邮件追踪后,参数就变成空字符串了——而且你已经验证过原始URL是带有效参数的,这问题我碰到过好几次,大概率是SendGrid的链接重写机制把Branch的参数给“吃掉”了。

核心原因分析

SendGrid的点击追踪和Link Branding默认会改写邮件里的所有链接,目的是统计点击数据,但这个过程如果没配置好,就会破坏Branch深度链接的参数结构,导致跳转后参数丢失。

一步步解决问题

1. 先让SendGrid放过你的Branch链接

这是最直接的解决办法:

  • 登录SendGrid后台,进入Settings > Tracking,找到Click Tracking选项
  • 在「Do Not Track」列表里添加你的Branch深度链接域名(比如your.app.link),这样SendGrid就不会改写这些链接,参数就能完整传递到Branch那边

2. 检查邮件模板里的链接格式

有时候在SendGrid模板里插入链接时,可能不小心做了额外编码或者截断:

  • 确保你插入的是Branch生成的完整原始链接,比如https://your.app.link/reset?reset=abc123,不要手动修改参数部分,也不要用SendGrid的变量去拼接参数
  • 如果用了SendGrid的动态模板,要确认变量替换后生成的链接是完整的,没有漏掉参数

3. 兼容SendGrid追踪的进阶配置

如果你不想关闭SendGrid的点击追踪(毕竟要做邮件数据统计),可以试试这两个方案:

  • 在Branch后台创建链接时,把参数嵌入到Branch短链内部,而不是附加在URL后面(Branch的后台支持直接添加自定义参数,生成的短链会包含这些参数)
  • 确认你的Branch域名和SendGrid的Link Branding域名没有冲突,比如不要用同一个二级域名,避免重定向时出现参数丢失的情况

4. 调试重定向流程,定位问题点

可以手动走一遍跳转流程,看看参数在哪一步丢了:

  1. 复制邮件里的SendGrid链接(不是最终跳转的Branch链接)
  2. 在浏览器里打开这个链接,观察跳转后的URL是否还保留reset或verify参数
  3. 如果跳转后参数没了,那肯定是SendGrid的问题,必须调整追踪设置;如果参数还在但Branch解析不出来,再去查Branch的配置

代码层面的兜底调试

虽然你说单独用Branch时代码没问题,但可以加个调试步骤确认问题:

branch.subscribe(({ params, error, uri }) => {
  if (error) {
    console.log('Error from Branch: ' + error)
    return
  }
  // 打印原始跳转URI,看看里面有没有参数
  console.log("Original jump URI :: ", uri);
  console.log("Branch parsed params :: ", params);
  
  // 手动从URI解析参数,作为兜底方案
  const urlParams = new URLSearchParams(new URL(uri).search);
  const resetToken = urlParams.get('reset') || params.reset;
  const verifyToken = urlParams.get('verify') || params.verify;
  
  if(resetToken) {
    console.log("Got reset token :: " + resetToken);
    Actions.resetpassword({resetToken: resetToken});
  } else if(verifyToken) {
    axios.post('http://localhost:3030/authmanagement', {
      "action":"verifySignupLong",
      "value": verifyToken
    }).then(response => {
      Actions.login({isVerifySuccess: true});
    }, error => {
      Actions.login();
    });
  }
});

这段代码会帮你确认:是参数在SendGrid跳转时丢了,还是Branch没有正确解析参数。如果手动解析能拿到参数,那就是Branch的解析逻辑有问题;如果手动解析也拿不到,那肯定是SendGrid的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:16:43