Please enable Javascript to view the contents

通过 Adjust 获取用户归因的解决方案

 ·  ☕ 2 分钟

背景信息

  1. 应用有用户注册系统,用户注册成功前/后,需判断/维护用户的归因信息;
  2. 用户的归因存在更新的情形,如再归因、由 iOS 用户 ATT 授权状态变化导致的的归因更新等;
  3. 选择方案时,主要考虑准确性+时效性。

归因字段说明

字段    说明   
{tracker_name} 完整归因信息,结构: {network_name}::{campaign_name}::{adgroup_name}::{creative_name}
{network_name}|{fb_install_referrer_publisher_platform} 渠道
{campaign_name}|{fb_install_referrer_campaign_group_name} 推广计划
{adgroup_name}|{fb_install_referrer_campaign_name} 推广组
{creative_name}|{fb_install_referrer_adgroup_name} 推广素材

三类获取途径

方式一:客户端 SDK

  • 官方文档:iOS, Android
  • 延迟说明:官方说法是 Adjust SDK 初始化成功后的 2~3s
坑:对于 iOS,即使 Adjust 是可以获取到具体归因信息的,但为了响应苹果隐私政策,SDK 返回的归因信息可能是 No User Consent,此时可以使用本文其他获取方式作为补救方案。

方式二:服务端回调

  • 官方文档:Callback structure
  • 回调配置:以下环节均可配置,按需:
    • 安装
    • 注册成功(自定义事件)
    • 归因更新
  • 延迟说明:官方说法是 30s,但实际操作过程中没有这么久

方式三:设备 API 接口

  • 官方文档:设备 API

  • 延迟说明:官方说法是 30s,但实际操作过程中没有这么久

  • 例子:

    1
    2
    3
    
    curl \
    --header "Authorization: Bearer {your_api_token}" \
    -L -X GET "https://api.adjust.com/device_service/api/v2/inspect_device?advertising_id={your_advertising_id}&app_token={your_app_token}"
    
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    {
      "Adid": "acf8534f2f052395e617a38730682ccc",
      "AdvertisingId": "1234-5678-9012-3456",
      "Tracker": "abc123",
      "TrackerName": "Organic",
      "FirstTracker": "zr5vueb",
      "FirstTrackerName": "Organic",
      "Environment": "sandbox",
      "ClickTime": "0001-01-01T00:00:00Z",
      "InstallTime": "2015-08-19T03:42:03Z",
      "LastSessionTime": "2017-07-29T17:29:17Z",
      "LastEventsInfo": {
          "kgfcul": {
            "name": "Copy IDFA",
            "time": "2024-07-18T10:01:16Z"
          },
          "wz9qqz": {
            "name": "Accept Terms",
            "time": "2024-07-01T14:13:47Z"
          },
          "z3f773": {
            "name": "Copy IDFV",
            "time": "2024-07-01T19:01:39Z"
          }
      },
      "LastSdkVersion": "ios4.37.2",
      "State": "installed"
    }
    

应用 Case

建议实际应用中,以上方式组合使用,以最大化用户归因的准确性。

Case1: 注册拦截

当需要根据用户归因信息进行注册拦截时,可采用如下的方案:

  • 优先客户端判断(2~3s)
  • 如果客户端有有效返回值,可直接在请求服务端注册接口时,携带归因信息
  • 如果客户端无有效返回值,此时服务端可通过设备 API 接口实时查询归因信息(30s)
    • 大写加粗强调:如果返回 No User Consent(属于设备未授权 ATT 的情形),也属于无有效返回值

Case2: 注册成功环节获取归因信息

对于安装且注册成功的用户,需要在数据库维护其归因信息,可采用如下的方案:

  • 先自定义一个 注册成功(NEW_USER_REGISTER_SUCCESS) 事件
  • 然后设置服务端回调,以获取用户的归因信息

可参考下图:

注册成功事件回调

Case3:iOS ATT 授权导致的归因更新

配置入口如下图,回调参数按需设置:

归因更新回调配置入口

附:两种 ATT 弹窗形式

第一种:先初始化,后弹窗(建议)

先初始化 SDK 再弹 ATT 弹窗

先初始化,后弹窗(图源 Adjust)

第二种:先弹出,后初始化

先弹 ATT 弹窗再初始化 SDK

先弹出,后初始化(图源 Adjust)
分享

Molly Wang
作者
Molly Wang
一个数据产品人的自我修养