1. 概述

1.1. App 客户端逻辑

对于 App 客户端来说,基本的工作就是根据上面的数据结构进行推送数据的解析,然后进行相关自定义操作。但是需要注意的是:

注意与原有逻辑的兼容,建议把神策的逻辑放到原有逻辑之前处理,防止原有推送逻辑无法解析神策数据,然后直接返回,导致神策推送数据没有处理。一定做好与原有逻辑的兼容。

1.2. App 端需要采集的事件:

  • 上报推送 ID
  • 触发推送打开的埋点

1.2.1. 上报推送 ID

对于各个推送平台来说,注册 ID 名称也有所差别,极光平台称之为 Registration ID,个推平台称之为 Client ID 以及友盟平台称之为 deviceToken,用处都类似,唯一标识一台设备。在推送注册成功后,各个推送平台都提供了相关的回调接口,此时在接口中调用 profilePushId(type, registerId) 接口上报注册 ID。

1.2.2. 触发推送打开的埋点

神策智能运营推送的数据格式参照上一节中的重要数据格式定义所列举,App 端需要采集通知打开的事件——$AppPushClick,该事件的属性都是从神策智能运营推送的数据中解析而来。$AppPushClick 事件的属性如下:

name

cname

说明

$sf_msg_title推送标题推送消息标题
$sf_msg_content推送内容推送消息内容
$sf_link_url打开指定链接打开一个 URL,会使用此字段,字段名固定
$sf_plan_id运营计划 ID推送计划 ID
$sf_audience_id运营受众 ID推送计划的受众 ID,受众是批量计算的,会定时变更,此 ID 用于区分是哪个批次的受众,非必须属性,可能没有
$sf_plan_strategy_id实验组 ID实验组 ID
$sf_plan_type计划类型目前有两个值,"运营计划" 和 "流程画布"
$sf_strategy_unit_id策略组 ID标记流程画布里策略器的 ID

2. 神策智能运营推送数据解读

2.1. 以 iOS / 极光 为例,推送直接拿到的结构如下:

{
    "_j_business" = 1;
    "_j_msgid" = 67554013335743940;
    "_j_uid" = 27613330581;
    aps =     {
        alert =         {
            body = "...";
            title = "...";
        };
        badge = 4;
        sound = "";
    };
    "sf_data" = "{.....}";
}
JS


2.2. 其中 sf_data 字段中的数据为神策智能运营传给客户端的数据,具体数据为:

# 推送消息中,sf_data 字段 JSON 解析后得到
{
    "sf_link_url":"http://sensorsdata.cn", # 打开一个 URL,会使用此字段,字段名固定
    "sf_landing_type":"CUSTOMIZED",        # 为 OPEN_APP、LINK、CUSTOMIZED
    "sf_msg_id": "83ddb764-e163-453e-a715-d68621170b71",  # 神策自行产生的消息 id,用于排错
    "sf_plan_id": "3",                  # 计划 ID 这里均为字符串类型,以支持在神策分析中进行分组
    "sf_audience_id": 5,                # 受众 ID
    "sf_plan_strategy_id": "0",         # 实验组 ID,用于区分实验组
    "sf_strategy_unit_id": "100",       # 策略器 ID,用于区分策略器
    "sf_plan_type": "运营计划",          # 计划类型,中文显示名(SIMPLE 运营计划,RICH 流程画布)
    "customized":{                      # 自定义字段信息(所谓的透传消息)
        "book_id":"12345",              # 这里的 key/value 是在计划中自定义的.
        "news_id":"678"
    }
}
JS


2.3. 对于 推送数据 和 sf_data 字段数据的具体解读:

来源字段名/获取方式对应到神策的 属性名(注意是预置属性,属性名带 $ 前缀)埋点时对应的神策数据类型含义
推送消息外部结构消息标题$sf_msg_titleSTRING推送标题
消息内容$sf_msg_contentSTRING推送内容
sf_datasf_link_url$sf_link_urlSTRING打开一个 URL,会使用此字段,字段名固定
sf_landing_type$sf_landing_typeSTRINGOPEN_APP、LINK、CUSTOMIZED
sf_plan_id$sf_plan_idSTRING这里均为字符串类型,以支持在神策分析中进行分组
sf_audience_id$sf_audience_idNUMBER受众 ID
sf_plan_strategy_id$sf_plan_strategy_idSTRING实验组 ID
sf_plan_type$sf_plan_typeSTRING计划类型,SIMPLE 运营计划,RICH 流程画布
sf_strategy_unit_id$sf_strategy_unit_idSTRING策略器 ID
customized

自定义字段信息(所谓的透传消息)

这里的 key/value 是在计划中自定义的.


其中 sf_landing_type 字段分别有 OPEN_APP、LINK、CUSTOMIZED,对应 App 的动作分别是唤醒应用、打开指定链接、自定义跳转

2.3.1. 唤醒 App

  1. 默认行为,点击推送消息,就打开 App 首页。
  2. 注意,这里虽然称之为 “唤醒 App”,但为了能够传递埋点所需的统计信息,仍旧会用到推送平台的 extra 字段等特性.
  3. sf_data 内含信息如下:

    {
        "sf_landing_type": "OPEN_APP",
        ...
    }
    JS
  4. 在 神策智能运营Web UI 端的触达设置示例:

2.3.2. 打开一个网页

  1. 在 App 里打开 URL.
  2. 您需要在 App 里解析 sf_data 结构并得到 sf_link_url 字段的信息,并实现打开 URL 的动作。
  3. sf_data 内含信息如下:

    {
        "sf_landing_type": "LINK",
        "sf_link_url": "http://sensorsdata.cn/",
        ...
    }
    JS
  4. 在 神策智能运营Web UI 端的触达设置示例:

2.3.3. 自定义消息

  1. 此处可以定义多个自定义的字段,用以描述更复杂的打开动作。
  2. sf_data 内含信息如下:

    {
        "sf_landing_type": "CUSTOMIZED",
        ...
        "customized":{
            "liveId": "1234",
            "foo": "bar"
        }
    }
    JS
  3. 在 神策智能运营Web UI 端的触达设置示例: