2. SDK 遠程配置
遠程配置通過訪問對應的數據接收地址下的 接口,得到 、 和 這三個配置項的值,來控制相應的功能。
初始化 SDK 可配置 中的參數 ,該參數控制是否禁用隨機時間請求遠程配置如何在android客戶端中做到自動檢查數據更新?,該配置目的是通過設置可分散降低 SDK 遠程配置請求的頻次。
如果該值設置為 true,則每次 APP 啟動后都會訪問遠程配置接口獲取遠程配置,如果開啟隨機時間請求遠程配置后,可設置遠程配置請求最小間隔時長 (單位為小時,默認值 24 )、遠程配置請求最大間隔時長 (單位為小時,默認值 48 ),SDK 根據設定的時間按照一定規則判斷是否滿足請求遠程配置條件,如果滿足條件則觸發遠程配置請求,若不滿足則不請求。請求失敗后,會自動最多重試 3 次。請求成功后更新配置,生效配置。具體時間約束規則,參考 SDK 源碼 類中 方法。遠程配置請求流程如下圖所示:
下面分別介紹下這三個配置項的取值含義:
(1)(目前已經廢棄)
(2)
(3)
如果要開啟全埋點中的部分事件,需要用下面的幾個值進行組合:
比如,我想開啟 $ 和 $ 事件,那 的值就是 5,即:1 + 4 = 5
(二)數據采集模塊
數據采集模塊是核心模塊,主要負責準確、完整地通過埋點來采集數據。數據采集模塊主要提供了下面幾個功能:
(三)數據存儲模塊
為了最大限度的保證事件數據的準確性和及時性,會要求數據采集 SDK 盡快將事件數據同步到服務端。但在某些情況下,例如用戶處于斷網環境,或者根據實際需求(對用戶體驗要求比較高的情況)會要求只有在 Wi-Fi 環境中才會同步數據,可能會導致事件數據無法同步或者同步失敗。因此,數據采集 SDK 一般采取的策略是:先把事件數據緩存在本地,待符合一定的策略之后,再去同步數據。
在 應用程序中,使用 數據庫進行埋點事件的存儲。
(四)網絡模塊
在數據存儲模塊中,介紹了如何把事件數據存儲到客戶端本地。如果事件數據一直緩存在本地,是沒有意義的,我們還需要把數據同步到服務端,然后再經過服務端的存儲、抽取、分析和展現,才能充分發揮數據的價值。因此,網絡模塊主要負責如何把緩存在本地的事件數據同步給服務端。
在 開發中,常見的網絡請求框架有:、 等。但是對于 SDK 來說,一般的原則是不依賴第三方的庫,所以這里我們通過簡單封裝 類進行網絡請求的發送。這里會涉及到數據的網絡發送策略,網絡策略一方面是為了降低用戶使用數據采集 SDK 的難度和成本,另一方面更是為了確保數據的正確性、完整性和及時性。
在這里,我們以最常用的三種數據同步策略為例來介紹:
上述三種策略是自動同步數據策略,三種策略為“或”的關系,當滿足其中一個策略 SDK 就會上報數據。如果需要手動觸發數據同步,可以直接調用 flush() 方法同步數據。
(五)輔助工具
神策分析 SDK 提供了許多埋點相關的工具類,這些輔助工具可以幫助埋點的實現。例如 提供了獲取控件內容、獲取頁面標題內容,獲取組件顯示的文本內容、獲取控件位置等等方法; 工具類獲取運營商信息、獲取 UA、合并 JSON 、檢測 等等方法,關于這些輔助工具的功能和實現就不逐一贅述了,具體可以參考 SDK 的源碼。
(六)日志服務
掃碼打開調試模式后如何在android客戶端中做到自動檢查數據更新?,SDK 同時自動開啟日志輸出功能,也可在測試階段通過 接口打開 SDK 日志輸出功能。
SDK 日志輸出開啟后,在 IDE 日志控制臺中篩選 SA. 關鍵詞進行日志篩選。
日志示例: