十二 埋點與分析

分析收集到的生產數據,用以發現應用的使用趨勢、用戶行爲,並經過埋點、分析和真實用戶監控對應用進行改進和優化。安全

12.1 詞彙

  • 屬性:須要得到具體值的參數,如應用版本、系統版本、位置、語言、使用內存等;
  • 事件:在應用中發生的任何行爲,不管是由用戶仍是由應用自己觸發;用戶觸發的事件包括登錄、觀看視頻等;應用觸發的事件包括冷啓動、後臺同步、下載郵件等;一個事件是一系列屬性的集合,這些屬性包括系統版本、設備型號、應用冷啓動的用時、後臺同步傳輸的數據量、下載郵件佔用的內存,等等。
  • 漏斗:用來測量用戶如何在一系列事件中切換的工具;一個漏斗能夠用來發現使用模式以及常見任務或應用退出的位置。
  • 埋點:監控或測量性能水平和診斷錯誤的一種能力。在應用開發領域,它指的是向服務器發送對應的事件以便分析。
  • 埋點源碼:在應用中注入埋點代碼。
  • 分析:在數據中發現和傳達有意義的模式。在應用開發領域,分析數據來源於應用埋點。
  • 同類羣組:特定時間內擁有共同特徵的一組用戶。
  • 同類羣組分析:對根據同類羣組特徵區分的數據進行分析。
  • 歸因:將應用的銷售功勞和轉化功勞分配給轉化路徑中的接觸點;用戶可能有多個選項來開始購買或完成任務。歸因模型規定了哪些選項將得到積分,並所以得到在廣告活動中花費的資金份額。
  • 真實用戶監控:被動監控技術,用於記錄用戶與應用的全部交互,將其發送到服務器,並幫助監控使用狀況、趨勢和出現的問題。

12.2 埋點

從概念來講,埋點與日誌並無區別,只是埋點的目的是將數據存儲在服務器,從而達到持久化,並將其用於分析,包括離線批處理任務或實時計算。服務器

12.2.1 規劃

部分(國外)經常使用iOS第三方統計庫:工具

  • Flurry
  • MixPanel
  • Appsee 支持交互熱力圖以及錄製應用使用的視頻。
  • Upsight 支持歸因和同類羣組分析。
  • Google Analytics

分析引擎應當包含如下的重要功能:性能

  • 可擴展事件:能夠對任意事件添加自定義參數或內容。
  • 同類羣組分析:使用可擴展事件的參數,過濾和分析其中特定的值。
  • 事件計時:能夠獲取事件的持續事件。
  • 記錄全部頁面視圖:能夠分析視圖控制器的展現和消失。
  • 用戶:能夠設置用戶,從而跟蹤匿名用戶,記錄事件。
  • 交易:能夠提供交易的貨幣價值,經常使用於電商或使用內購的應用。
  • A/B測試:能夠進行A/B測試,監控用戶行爲。
  • 實時數據:能夠獲取實時或近實時數據。
  • 安全:能夠監控安全,監控與服務器通訊的安全程度,以及服務器上的數據的安全程度。
  • 會話回放:能夠錄製視頻,以後回放。這樣能夠近距離監控應用的使用狀況,更好的發現出錯場景,更快地對其進行修復。
  • 熱力圖:能夠產生熱力圖來確認應用的熱點和盲點。
  • 歸因:能夠跟蹤點擊以及應用安裝的歸因。
  • 活動:支持有組織或自發的活動。
  • 漏斗:使用事件流定義漏斗。
  • 原始事件:在複雜的處理過程當中使用源數據是錦上添花的一件事。

12.2.2 實現

肯定埋點方案,而後進行配置:測試

  • 肯定指標:這個過程須要產品、營銷和工程師團隊合做。產品經理須要用戶體驗統計,營銷團隊感興趣的是應用使用狀況和用戶感興趣的部分,而工程師團隊但願瞭解應用的性能。
  • 定義事件:定義事件名稱和相關內容來支持關鍵的績效指標。例:若是工程師團隊須要內存使用的均值和峯值,那麼事件應該包括已使用內存的數據、空閒內存,以及應用啓動和運行的時間。
  • 編寫代碼:埋點類--方法列表
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
[@interface](https://my.oschina.net/u/996807) HPInstrumentation : NSObject
+(void)logEvent:(NSString *)name param:(NSDictionary *)params;//1.記錄通常事件
+(void)startTimeForEvent:(NSString *)name params:(NSDictionary *)params;
+(void)endTimeForEvent:(NSString *)name params:(NSDictionary *)params;//2.記錄計時事件

+(void)logViewControllerDidAppear:(UIViewController *)vc;//3.記錄用戶瀏覽過的視圖控制器
+(void)setLocation:(CLLocation *)location;//4.爲後續事件設置位置信息
+(void)setUserId:(NSString *)userId;//5.爲後續事件設置用戶ID,經常使用於記錄登錄後的行爲

+(void)logError:(NSString *)name message:(NSString *)message exception:(NSException *)e;//6.記錄錯誤的特殊事件

+(void)setMinimumTimeBetweenSessions:(NSTimeInterval *)interval;//7.計算會話次數的特殊處理,影響平常活躍用戶的計數。
[@end](https://my.oschina.net/u/567204)

可使用Aspects來設置經常使用跟蹤事件:優化

[UIViewController aspect_hookSelector:@selector(viewDidAppear:)//1.添加一個鉤子方法到類UIViewController的viewDidAppear方法上。
                             withOptions:AspectPositionAfter //2.鉤子方法必須在原始方法調用後生效。
							   usingBlock:^(id<AspectInfo> info, BOOL animated){//3.實現鉤子方法。參數是id<AspectInfo>,提供了調用塊的上下文對象,以及原始方法(此處是viewDidAppear:)須要的參數
								   NSDictionary *eventParams = @{@"ViewContrillerClass":[info.instance class]};//4.設置被記錄事件的參數
								   [HPInstrumentation logEvent:@"viewDidAppear" param:eventParams];//5.記錄日誌
							   }error:NULL];
  • 驗證:發佈前須要先驗證。測試不只僅要考慮正確性,同時也要考慮規模。確保依賴的第三方服務有足夠的容量不會被應用事件的流量壓垮。

12.2.3 部署

涉及發佈服務器到生產,以及發佈應用到App Store。.net

12.3 分析

分析使用埋點事件產生的數據來展現有利於實現目標規劃的洞見。 分析對發現趨勢和關鍵指標分佈很是有用。能夠用它來發現每一個用戶的平局會話時長或平均交易量。但不要將其用於跟蹤,例如,應用已經被安裝了多少次。一個特定的API能夠準確跟蹤這些統計項。日誌

12.4 真實用戶監控

真實用戶監控是監控應用以獲取和分析用戶的每一個事務的方法。他依賴於服務端或客戶端內用於監控的服務,這些服務能夠監控活動的組件、其功能、應用的響應性、整體的資源使用狀況和其餘各類參數。code

12.4.1 分析與真實用戶監控對比

分析和真實用戶監控的巨大差別在於,分析只使用一部分數據(樣本)進行處理來提供高級趨勢預測。 各類各樣的產品提供對應用進行埋點和分析的功能,並將本身列爲分析工具而不是真實用戶監控的工具,由於它們只是樣本。視頻

12.4.2 使用真實用戶監控

真實用戶監控會記錄全部的事件,而不只是樣本,因此應將其用於監控關鍵事件。

  • 任何錯誤,包括應用奔潰或無效狀態。
  • 應用新版本發佈後質量的變化。
  • 新功能相關的用戶行爲變化。
  • 記錄重要事務中的每一個步驟。
相關文章
相關標籤/搜索