Branch.io 通过安装传递自定义数据

Posted

技术标签:

【中文标题】Branch.io 通过安装传递自定义数据【英文标题】:Branch.io Pass Custom Data with Install 【发布时间】:2018-06-06 15:57:59 【问题描述】:

我正在使用 Branch.io 将安装链接回广告活动。我们的设置仅使用 Branch 进行安装归因,然后通过 webhook 将安装元数据发送回我们的应用程序。我想通过安装事件传递一些自定义参数,以便我们可以将安装绑定到特定用户(在我们自己的系统中,不使用 Branch 的分析)。我最初的想法是像这样调用 Branch SDK 的 setRequestMetaData() 函数:

[[Branch getInstance] setRequestMetadataKey: @"userId" value: 123];

问题是我没有在通过 webhook 发送的安装负载中看到该数据。下面是 webhook 有效负载的样子:


    "name":  "INSTALL",
    "user_data":  
        "os": "ios",
        "os_version": "11.4",
        "environment": "FULL_APP",
        "platform": "IOS_APP",
        "idfv": "masked",
        "limit_ad_tracking": false,
        "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (Khtml,
         like Gecko) Mobile/15F79",
        "ip": "xxx.xx.xx.xx",
        "country": "US",
        "language": "EN",
        "sdk_version": "0.25.0",
        "app_version": "2.6.3",
        "brand": "Apple",
        "model": "iPhone7,2",
        "geo_dma_code": 501,
        "geo_country_code": "US"
    ,
    "last_attributed_touch_data":  
        "~feature": "marketing",
        "~id": 464580903277040904,
        "~campaign": "test-campaign",
        "~channel": "Facebook",
        "+url": "https: //subdomain.test-app.link/branch-test",
        "$desktop_url": "http: //www.sample.com",
        "$marketing_title": "Test Link",
        "~creation_source": 1,
        "~marketing": true,
        "+click_timestamp": 1528297685,
        "$one_time_use": false,
        "$android_url": "http: //www.sample.com",
        "$ios_passive_deepview": "branch_passive_default",
        "testTag": "testValue",
        "~tags": [
            "123"
        ],
        "+via_features": [
            "QUICK_LINKS"
        ]
    ,
    "timestamp":  1528297898204

还有其他方法可以通过分支安装事件传递自定义数据吗?

【问题讨论】:

【参考方案1】:

看起来他们支持那个用例。

这是来自他们的文档(参见 Track users):

// login
[[Branch getInstance] setIdentity:@"your_user_id"];

// logout
[[Branch getInstance] logout];

请注意,未经用户事先同意,这样做是违反 GDPR 的,因此如果您在欧洲有用户,他们需要有一个选择加入的 UI 和解释。

【讨论】:

我考虑过这种方法,但我真的只想跟踪安装。 setIdentity 确实应该与登录事件相关联。由于用户在安装后第一次启动应用程序时没有登录,所以我的问题的真正意思是我需要发送某种匿名 ID,而不是与我们的应用程序对应的真实用户 ID。 没必要。如果你有一些“userId”来识别你的用户,你可以使用setIdentity。如果稍后用户决定登录(假设是为了获得更多功能),那么他要么使用相同的 userId(所以以前的 setIdentity 应该没问题),或者他输入不同的用户名,所以你可以调用 @ 987654326@ 再次使用新的 userId(就像用户注销并使用不同的名称登录一样)。无论如何,我认为“setIdentity”不会发送事件,因此要跟踪登录,您必须创建一个自定义事件(如“跟踪事件”中所示)。 感谢您的帮助!我们不是在尝试跟踪登录,我们实际上只是在尝试跟踪安装(即首次启动)。如果分支参数+is_first_session 为真,我们的新解决方法是发送自定义事件。这样我们就可以将营销归因数据导入我们自己的系统,而不必过度依赖 Branch。【参考方案2】:

任何请求元数据都应该在*** JSON 字典中,custom_data 在 webhook 主体中的 last_attributed_touch_data 旁边。你是在 SDK 初始化之前调用setRequestMetadata 吗?确保在调用 setDebug() 模式时在每个 SDK 请求上发送键/值。这是示例正文:https://docs.branch.io/pages/exports/ua-webhooks/#sample-webhook-post-body-syntax

【讨论】:

是的,我在初始化 Branch 之前调用了setRequestMetadata。我还在文档中看到了示例帖子正文。不幸的是,正如您在我的问题中包含的 json 有效负载中看到的那样,它仍然不存在。哦,好吧,我们已经想出了如何使用自定义事件以另一种方式做到这一点,而且它可能是一个更灵活的解决方案。

以上是关于Branch.io 通过安装传递自定义数据的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上的 branch.io 上的两个应用程序中支持相同的自定义域

使用 Branch.io 的自定义 URL 方案中的路径变量?

Branch.io 自定义事件计数不会增加快速链接

Branch.io 自定义网址缩短器和通用链接

自定义子域设置后,Branch.io 链接不跟踪点击次数

react native 中的 branch.io 自定义事件未触发奖励规则