iOS端Branch.io谷歌/脸书广告系列会话参数channel与campaign获取问题
先明确你的业务场景:
- Google Adwords Universal Campaign(通用广告系列) 和 Facebook 常规应用广告系列 未使用Branch链接投放
- Branch分析后台能正常统计到这些广告带来的安装量和转化事件
- 但在以下代码的回调参数中,拿不到期望的
channel和campaign字段:
Branch.getInstance().initSession(launchOptions: launchOptions) { (parameters, error) in // Expect 'channel' and 'campaign' parameters here }
- 对比之下,使用Branch链接的Google Adwords搜索广告系列,能正常获取
campaign参数
核心原因
Branch的initSession回调参数默认是从点击的Branch链接中解析得到的。当你不使用Branch链接投放广告时,虽然Branch能通过与广告平台的归因API(比如Google Ads API、Facebook Marketing API)同步数据并在后台统计,但这些服务器端的归因数据不会自动同步到initSession的客户端回调参数里——因为没有Branch链接携带的上下文信息触发解析。
解决方案
要在客户端获取到这些非Branch链接投放的广告的channel和campaign参数,你可以按以下步骤操作:
1. 确认Branch后台的归因数据同步配置
在Branch后台的归因设置中,确保已经开启了与Google Adwords、Facebook的归因数据同步,并且勾选了「将归因数据传递到客户端」的选项(具体路径:Branch Dashboard → Attribution → Cross-Platform Attribution → 对应广告平台的设置模块)。
2. 使用getLastAttribution方法获取完整归因数据
如果initSession的回调参数里没有直接返回channel和campaign,你可以在initSession完成后,调用Branch的getLastAttribution方法来获取完整的归因信息,其中会包含你需要的字段:
Branch.getInstance().initSession(launchOptions: launchOptions) { (parameters, error) in guard error == nil else { // 处理错误逻辑 return } // 获取完整的归因数据 if let attribution = Branch.getInstance().getLastAttribution() { let channel = attribution["channel"] as? String let campaign = attribution["campaign"] as? String // 在这里使用channel和campaign参数 } }
3. 验证广告平台的转化跟踪配置
- 对于Google Adwords通用广告系列:确认你已经在Branch后台正确配置了Google Ads的转化跟踪,并且开启了「导入Google Ads归因数据」的开关
- 对于Facebook常规应用广告系列:确保Facebook应用事件已正确回传给Branch,且Branch后台开启了Facebook归因数据的导入功能
补充说明
当使用Branch链接投放时,链接本身携带了campaign、channel等参数,所以initSession能直接解析到这些字段;而无Branch链接的投放场景,归因数据是通过Branch与广告平台的服务器端同步获取的,需要通过getLastAttribution方法来拉取到客户端。
内容的提问来源于stack exchange,提问作者Kostya Shabanov

