1.整合 SDK

1.1. 整合神策分析 SDK

在使用彈窗SDK 前,請確保已經整合了神策分析 SDK,版本需要在[ v4.0.3|https://github.com/sensorsdata/sa-sdk-android/releases/tag/v4.0.3] 及以上,詳細整合步驟請參照[Android SDK 埋點整合使用説明文檔|https://manual.sensorsdata.cn/sa/1.13/tech_sdk_client_android_basic-17563956.html]。 如果使用多module,請確保神策分析 SDK 和神策彈窗 SDK 在同一 module 中引入,或者確保引用神策彈窗 SDK 的 module 能引用到神策分析 SDK。

1.2. 整合神策彈窗 SDK

build.gradle 檔案中新增神策彈窗 SDK 依賴:

dependencies {+添加 SensorsFocus SDK 依賴implementation 'com.sensorsdata.analytics.android:SensorsFocusSDK:0.4.0'}

彈窗 SDK 整合 Demo,可參考[ GitHub

https://github.com/sensorsdata/sf-sdk-android]。


2. 初始化 SDK

首先您需要初始化初始化神策分析SDK,具體可參考:初始化神策分析[ SDK|https://manual.sensorsdata.cn/sa/1.13/sdk-android-17563956.html#id-.SDK集成(Android)v1.13-初始化神策分析SDK]。 初始化神策分析 SDK 完成之後,再初始化神策分析彈窗 SDK。 彈窗SDK和神策分析 SDK 都需要在 Application 類的 onCreate() 方法主線程初始化。 在彈窗 SDK 初始化時需要傳入彈窗服務端位址,請聯繫運營人員獲取。

初始化神策分析 SDK... -初始化神策彈窗SDKSensorsFocusAPI.startWithConfigOptions(thisnew SFConfigOptions(" 彈窗服務端位址"));


3. 設定 Scheme

關於 Scheme 的設定方法,參考:取得[ Scheme|https://manual.sensorsdata.cn/sa/1.13/sdk-android-17563956.html#id-.SDK集成(Android)v1.13-配置Scheme]

4. 實現彈窗回檔

4.1. 設定回調

SensorsFocusAPI 初始化時,可以通過 SFConfigOptionssetPopupListener 方法設置彈窗的回調監聽。 setPopupListener 提供了四個監聽介面:

SensorsFocusAPI.startWithConfigOptions(thisnew SFConfigOptions("彈窗服務端位址").setPopupListener (new PopupListener() { @Override public void onPopupLoadSuccess(String planId) {} @Override public void onPopupLoadFailed(String planId, int errorCode, String errorMessage) {} @Override public void onPopupClick(String planId, SensorsFocusActionModel actionModel) {} @Override public void onPopupClose( String planId) {}})); }


4.2. 方法說明

4.2.1. 設定彈窗載入成功回調

彈窗載入成功時,會觸發onPopupLoadSuccess(String planId)方法,其中 planId 為計劃 ID。

4.2.2. 設定彈窗載入失敗回調

彈窗失敗時會觸發onPopupLoadFailed(String planId, int errorCode, String errorMessage)方法,其中 planId 為計劃 ID,errorCode 為錯誤碼,errorMessage 為錯誤資訊。 具體錯誤碼對應資訊如下:

錯誤碼

描述資訊

1000

圖片載入失敗

1001

預覽資訊解析失敗,請檢查計劃配置

4.2.3. 設定彈窗按鈕點擊回調

彈窗點擊時,會觸發onPopupClick(String planId, SensorsFocusActionModel actionModel)方法,其中 planId 為計劃 ID,actionModel 包含了後端配置彈窗的一些資訊,具體含義如下:

欄位

彈窗點擊後行為

SensorsFocusActionModel.CLOSE

點擊彈窗時就關閉彈窗

SensorsFocusActionModel. OPEN_LINK

點擊後開啟連結,可透過actionModel.getValue() 取得連結

SensorsFocusActionModel.COPY

點擊後複製文字內容,可透過actionModel.getValue() 取得複製文字

SensorsFocusActionModel.CUSTOMIZE

自訂行為,可透過actionModel.getExtra() 獲取自訂欄位

範例代碼如下:

public void onPopupClick(String planId, SensorsFocusActionModel actionModel) { switch (actionModel) { case OPEN_LINK: // 自定義處理打開連結操作String url = actionModel.getValue(); Log.d("PopupClick", "url = " + url); break; case COPY: - 自定義處理複製操作String copyText = actionModel.getValue(); Log.d("PopupClick", "copyText = " + copyText); break; case CLOSE: - 處理 close break; case CUSTOMIZE: - 處理自定義操作JSONObject customizeJson = actionModel.getExtra(); break; }}


4.2.4. 設定彈窗被關閉回調

彈窗關閉時會觸發onPopupClose(String planId)方法,其中 planId 為計劃 ID。

5. 彈窗自定義觸達

5.1. 名詞解釋

名詞

解釋 / 定義

備註

自定義觸達

使用神策智慧運營,滿足運營條件后,客戶可以自定義的觸達方式,例如可以發券、彈窗、跳轉、紅包雨等等


5.2. API 使用

版本要求

  • Android SDK v5.1.3 及以上版本
  • 神策彈窗SDK v0.4.0 及以上版本

在初始化SDK 時,實現 SensorsFocusCampaignListener 介面,即可使用自定義觸達功能,示例代碼如下:

SensorsFocusAPI.startWithConfigOptions(this, new SFConfigOptions(apiBaseUrl).setCampaignListener(new SensorsFocusCampaignListener() { /** * 返回 bool 值決定觸達是否開始 */ @Override public boolean campaignShouldStart(SFCampaign sfCampaign) { =如果是自定義觸達 if(SFCampaign.Type.CUSTOMIZED == sfCampaign.getType()){ try {JSONObject jsonObject = new JSONObject(sfCampaign.getContent()); } catch (JSONException e) {e.printStackTrace(); }}else if(SFCampaign.Type.PRESET == sfCampaign.getType()){ } return true ; } /** * 觸達開始時調用 */ @Override public void onCampaignStart(SFCampaign sfCampaign) {} /** * 觸達結束時調用 */ @Override public void onCampaignEnd(SFCampaign sfCampaign) {} /** * 觸達失敗時調用 */ @Override public void onCampaignFailed(SF Campaign sfCampaign, int errorCode, String errorMessage) {}}).setPopupListener(new PopupListener () { /** * 彈窗載入成功 */ @Override public void onPopupLoadSuccess(String planId) {} /** * 彈窗載入失敗 */ @Override public void onPopupLoadFailed(String planId, int errorCode, String errorMessage) {} /** * 彈窗點擊 */ @Override public void onPopupClick( String planId, SensorsFocusActionModel actionModel) {} /** * 彈窗關閉 */ @Override public void onPopupClose(String planId) {}}));


5.3. API 說明

5.3.1. 資料結構

SFCampaign 數據結構介紹:

名稱

類型

說明

planId

String

計劃 ID,為下發欄位的 plan_id 取得

name

String

計劃名稱,為下發欄位的 cname 取得

content

String

計劃內容,為下發計劃欄位的 popup_window_content 中的 content 字段

type

SDK 內定義枚舉 Type

觸達類型,為 SDK 內枚舉,PRESET 為預置彈窗,CUSTOMIZED 為自定義觸達

5.3.2. 狀態碼說明

失敗或成功狀態碼,失敗時會回調campaignFailed,並且觸發的 $PlanPopupDisplay 的 $sf_succeed 為 false,$sf_fail_reason 值為失敗原因。


觸達介面呼叫情況

發生情況

失敗原因(errorMessage)

失敗狀態碼 (errorCode)

備註

1

失敗

SensorsFocusCampaignListener 介面為空

自定義觸達計劃未實現彈窗生命周期回調

1006


2


is_trigger 為false

計劃下發 is_trigger 為 false

1005


3


campaignShouldStart 返回 false

campaignShouldStart 介面返回 false

1004


4


對照組,舊版邏輯

對照組

1003

舊版本相容處理

5


Activity 在後台,僅限彈窗,舊版邏輯

內部記錄失敗原因為空字串,不會傳遞給開發者

1002

舊版本仍然會觸發$PlanPopupDisplay 為成功的事件($sf_succeed 為 true,且沒有 $sf_fail_reason 屬性)iOS 不會有這種情況, 所以考慮的是 Android 保持現狀,和之前一樣的邏輯

6


預覽 JSON 資訊解析失敗,舊版邏輯

預覽資訊解析失敗,請檢查計劃配置

1001


8

成功

展示彈窗

-

-


9


自定義觸達

-

-


6. 彈窗測試

6.1. 建立運營計劃

首先在神策智慧運營中建立運營計畫,並且「觸發條件」中的「平台類型」選擇 Android,然後設定好「觸達配置」。 "就可以點擊右側的「測試彈窗」按鈕以打開二維碼。

6.2. 掃描二維碼

使用已安裝了測試 App 的設備,通過手機自帶的系統瀏覽器掃描二維碼,掃碼後會在瀏覽器中打開二維碼對應的網頁。

6.3. 喚起 App

點擊網頁中的「前往App 測試彈窗」按鈕,若 App 已經成功整合 SDK 則會直接喚起 App 或提示詢問是否喚起 App。 如果不能正常打開App,請強殺App後重試。

6.4. 測試彈窗效果

跳轉成功后,會在 App 內彈出彈窗。 彈窗后的關閉彈窗、點擊按鈕等效果與創建的運營計劃一致。