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

Branch.io延迟深度链接在Facebook广告中失效:无法获取安装Referrer

解决Branch.io延迟深度链接在Facebook广告场景下无法获取Install Referrer的问题

我之前帮不少开发者踩过Branch.io + Facebook广告归因的坑,你的情况本质是Facebook广告的跳转链路对referrer参数有特殊处理,加上Branch的配置没适配Facebook场景导致的,咱们一步步来解决:

核心原因分析

直接点击Branch深度链接能拿到referrer,是因为链路是Branch链接 → 你的自定义Play商店链接,参数直接传递;但通过Facebook广告跳转时,Facebook会对落地链接做一层中间跳转,这会过滤或修改你手动拼接的referrer参数,而且普通的自定义Web链接没有适配Facebook的归因规则,导致参数丢失。

解决方案步骤

1. 修正Branch后台的广告链接配置

不要手动拼接带referrer的Play商店链接,改用Branch针对Facebook的内置适配:

  • 进入Branch后台 Dashboard => Ads => Links,找到你创建的深度链接
  • 编辑链接的Android App Not Installed跳转行为,选择Deep Link to App Store,让Branch自动处理跳转和referrer传递
  • 确保链接的广告平台选择为Facebook,Branch会自动注入Facebook广告归因所需的参数,兼容Facebook的跳转链路

2. 完善Manifest中的接收器配置

你的自定义InstallTracker接收器可能和Branch的接收器存在优先级冲突,导致无法拿到完整的referrer。需要同时配置Branch的接收器,并设置更高优先级:

<!-- Branch的INSTALL_REFERRER接收器,优先级高于自定义接收器,确保先处理归因 -->
<receiver
    android:name="io.branch.referral.InstallListener"
    android:exported="true"
    android:permission="android.permission.INSTALL_PACKAGES">
    <intent-filter android:priority="200">
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

<!-- 自定义接收器,优先级稍低,用于补充处理 -->
<receiver android:name=".InstallTracker" android:exported="true">
    <intent-filter android:priority="100">
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

3. 改用Branch SDK直接获取归因数据

依赖INSTALL_REFERRER广播的方式在Facebook场景下不稳定,建议直接通过Branch SDK获取归因信息,更可靠:
在你的Application类的onCreate方法中初始化Branch后,添加以下代码:

@Override
public void onCreate() {
    super.onCreate();
    // 初始化Branch SDK
    Branch.getAutoInstance(this);
    
    // 获取归因参数
    Branch.getInstance().initSession(new Branch.BranchReferralInitListener() {
        @Override
        public void onInitFinished(JSONObject referringParams, BranchError error) {
            if (error == null) {
                // 获取referrer值
                String referrer = referringParams.optString("referrer");
                // 还可以获取Facebook广告的专属参数,比如广告系列ID、创意ID等
                String fbCampaignId = referringParams.optString("$facebook_campaign_id");
                String fbAdId = referringParams.optString("$facebook_ad_id");
                
                Log.d("tag", "Branch归因参数: " + referringParams.toString());
                Log.d("tag", "获取到的referrer: " + referrer);
            } else {
                Log.e("tag", "Branch初始化失败: " + error.getMessage());
            }
        }
    }, getIntent(), this);
}

4. 用正确的方式测试Facebook广告链路

普通的链接点击测试无法模拟Facebook的真实跳转,必须用官方测试流程:

  • 在Facebook Ads Manager中创建测试广告,将Branch生成的广告链接设为落地页
  • 把你的测试设备添加到广告的测试设备列表中
  • 通过Facebook Ads Manager的预览功能或直接在测试设备上点击广告,完成下载安装,再查看归因数据

5. 检查Facebook广告的设置

确保广告的落地页URL是Branch后台生成的广告专用链接,不要使用自定义的Play商店链接;同时确认广告的归因设置中,允许第三方归因工具(Branch)获取数据。

总结

Facebook广告的跳转链路会过滤手动拼接的referrer参数,必须依赖Branch针对Facebook的适配配置,同时优先让Branch处理INSTALL_REFERRER广播,或者直接通过Branch SDK获取归因数据,这样才能稳定拿到预期的referrer值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:36