概述

App 用戶端邏輯

對於 App 客戶端來說,基本的工作就是根據上面的數據結構進行推送數據的解析,然後進行相關自定義操作。 但是需要注意的是:

注意與原有邏輯的相容,建議把神策的邏輯放到原有邏輯之前處理,防止原有推送邏輯無法解析神策數據,然後直接返回,導致神策推送數據沒有處理。 一定做好與原有邏輯的相容。


App 端需要採集的事件:

  • 上報推送 ID
  • 觸發推送打開的埋點

上報推送 ID

對於各個推送平台來說,註冊 ID 名稱也有所差別,極光平臺稱之為RegistrationID,個推平臺稱之為 Client ID 以及友盟平臺稱之為 deviceToken,用處都類似,唯一標識一台設備。 在推送註冊成功后,各個推送平臺都提供了相關的回調介面,此時在介面中調用 profilePushId(type, registerId) 介面上報註冊 ID。

觸發推送打開的埋點

神策SF推送的數據格式參照上一節中的重要數據格式定義所列舉,App 端需要採集通知打開的事件——$AppPushClick,該事件的屬性都是從神策 SF 推送的數據中解析而來。 $AppPushClick 事件的屬性如下:

name

cname

說明

$sf_msg_title

推送標題

推送消息標題

$sf_msg_content

推送內容

推送消息內容

$sf_link_url

打開指定連結

開啟 URL,會使用此欄位,欄位名稱固定

$sf_plan_id

運營計劃 代碼

推送計畫 代碼

$sf_audience_id

運營受眾 ID

推送計劃的受眾 ID,受眾是批量計算的,會定時變更,此 ID 用於區分是哪個批次的受眾,非必須屬性,可能沒有

$sf_plan_strategy_id

實驗群 組代碼

實驗群 組代碼

$sf_plan_type

計劃類型

目前有兩個值,「運營計劃」 和 「流程畫布」

$sf_strategy_unit_id

原則群 組 ID

標記流程畫布里策略器的 ID

SF 推送資料解讀

以 iOS / 極光 為例,推送直接拿到的結構如下:

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



其中 sf_data 欄位中的數據為 SF 傳給客戶端的數據,具體資料為:

# 推送消息中,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"
}
}



對於 推送數據 和 sf_data 字段數據的具體解讀:

來源

欄位名稱/取得方式

對應到神策的 屬性名稱(注意是預置屬性,屬性名帶 $ 前置字碼)

埋點時對應的神策數據類型

含義

推送消息外部結構

消息標題

$sf_msg_title

STRING

推送標題


消息內容

$sf_msg_content

STRING

推送內容

sf_data

sf_link_url

$sf_link_url

STRING

開啟 URL,會使用此欄位,欄位名稱固定


sf_landing_type

$sf_landing_type

STRING

OPEN_APP、LINK、CUSTOMIZED


sf_plan_id

$sf_plan_id

STRING

這裡均為字串類型,以支援在神策分析中進行分組


sf_audience_id

$sf_audience_id

NUMBER

受眾 ID


sf_plan_strategy_id

$sf_plan_strategy_id

STRING

實驗群 組代碼


sf_plan_type

$sf_plan_type

STRING

計劃類型,SIMPLE 運營計劃,RICH 流程畫布


sf_strategy_unit_id

$sf_strategy_unit_id

STRING

原則器 ID


customized


自訂欄位資訊(所謂的透傳訊息)
這裡的 key/value 是在計畫中自訂的.


其中sf_landing_type 欄位分別有 OPEN_APP、LINK、CUSTOMIZED,對應 App 的動作分別是喚醒應用、打開指定連結、 自訂跳轉

喚醒 App

  1. 默認行為,點擊推送消息,就打開 App 首頁。
  2. 注意,這裡雖然稱之為 「喚醒 App」,但為了能夠傳遞埋點所需的統計資訊,仍舊會用到推送平臺的 extra 字段等特性.
  3. sf_data 內含資訊如下:

    {
    "sf_landing_type": "OPEN_APP",
    ...
    }

  4. 在 SF Web UI 端的觸達設定範例:

打開一個網頁

  1. 在 App 裡開啟 URL.
  2. 您需要在 App 裡解析 sf_data 結構並得到 sf_link_url 欄位的資訊,並實現打開 URL 的動作。
  3. sf_data 內含資訊如下:

    {
    "sf_landing_type": "LINK",
    "sf_link_url": "http://sensorsdata.cn/",
    ...
    }

  4. 在 SF Web UI 端的觸達設定範例:

自訂消息

  1. 此處可以定義多個自定義的欄位,用以描述更複雜的打開動作。
  2. sf_data 內含資訊如下:

    {
    "sf_landing_type": "CUSTOMIZED",
    ...
    "customized":{
    "liveId": "1234",
    "foo": "bar"
    }
    }

  3. 在 SF Web UI 端的觸達設定範例: