最近在公司沒什麼事可做,老大就讓我去調查幾種應用數據收集的框架。
我給整理成了一份word,現在分享給大家~
Feedback of Tools
by Adrian Wang
2013 /11 / 27
Bugsense ( https://www.bugsense.com/docs/windowsphone)
部署:
直接安裝Nuget包:Install-Package BugSense.WP8
或在擴展和更新中搜索BugSense.WP8進行安裝
或下載工程編譯後添加聲稱的引用
程序初始化:
1.在App.xaml.cs中的App構造函數中:
public App()
{
InitializeComponent();
InitializePhoneApplication();
InitializeLanguage();
BugSenseHandler.Instance.InitAndStartSession(this, "YOUR_API_KEY");
}
2.移除UnhandledException += Application_UnhandledException;
這些工作完成後即可在Dashboard中看到發生的崩潰信息。
其他功能:
1在try catch語句中,可以在catch中調用
BugSenseHandler.Instance.LogException
將Exception的信息以及其他需要附加的信息寫入log發送到dashboard
2 可以在代碼的各處添加簡直對或者標記信息,當crash時會發送回dashboard
3 可以在App.xaml.cs中設置當crash時調用的函數(此功能無法使用,已發送郵件諮詢開發者,回覆說正在開發新版本,讓我等等用更酷的功能!)
4 可以跟蹤一個事件,BugSenseHandler.Instance.SendEvent("anEvent");
參數爲事件名。
5 設置本地化bug修復提示框,當某一個bug被修復之後,會彈窗提醒用戶已經修復並下載最新版。這個需要在網頁的Setting中設置,但是多語言不知道如何設置。
6 當要監視異步方法時,需要在MainPage的loaded或者OnNavigatedTo方法中添加:
BugSenseHandler.Instance.RegisterAsyncHandlerContext();應該在每一個需要見識的PhoneApplicationPage中都調用此方法。
免費版每月只能接受500個bug,數據保留7天,每月數據點爲35萬
Localytics (http://www.localytics.com/ )
部署:
從Doc中下載源文件(http://www.localytics.com/wp-content/uploads/2012/11/LocalyticsSession.cs)
僅有WP7的版本,在WP8中測試可用。另外該文件沒有namespace,得手動添加。。
然後添加現有項把下載的cs文件導入項目。
程序初始化:
在App.xaml.cs中添加變量:
public LocalyticsSession session;
在Application的Launching和Activated中添加:
session = new LocalyticsSession("99041235e3752151e4b97bf-b31a7dee-5645-11e3-927e-005cf8cbabd8");
session.open();
session.upload();
在Application的Closing和Deactivated中添加:
session.close();
在Application_UnhandledException中添加用於返回異常的語句:
var attributes = new Dictionary<string, string> { { "exception", e.ExceptionObject.Message } };
session.tagEvent("App Crash", attributes);
Capability:
<CapabilityName="ID_CAP_IDENTITY_DEVICE"/>
功能:
在其他頁面通過
((App)Application.Current).session.tagEvent("Event Name");
來進行標記,當程序退出之後會向Dashboard中返回各個標記出現的時間,個數等許多信息。
限制:
Up to 10,000用戶
Up to 1 Million 數據點
Flurry ( http://www.flurry.com/flurry-analytics.html )
部署:
註冊完成之後即可下載SDK(一個包含key和dll的壓縮文件)。
將dll添加引用到項目中即可。
程序初始化:
在App.xaml.cs的Launching中添加:
FlurryWP8SDK.Api.StartSession("J7TNCYK2ZT2JRVCX3NBH");
在Activated中添加:
FlurryWP8SDK.Api.StartSession("J7TNCYK2ZT2JRVCX3NBH");
添加Capability
Identity_Device
Networking
功能:
直接添加事件(每個應用最多能添加300個事件):
FlurryWP8SDK.Api.LogEvent("Article_Read");
帶參數的事件(每個事件最多10個參數,每個參數的值無限):
List<Parameter> articleParams = new List<Parameter>{ new Parameter("Author", "John Q"),
new Parameter("User_Status", "Registered") };
FlurryWP8SDK.Api.LogEvent("Article_Read", articleParams);
測量整個事件持續時間:
List<Parameter> articleParams = new List<Parameter>{ new Parameter("Author", "John Q"),
new Parameter("User_Status", "Registered") };
FlurryWP8SDK.Api.LogEvent("Article_Read", articleParams, true);
// In a function that captures when a user navigates away from article
FlurryWP8SDK.Api.EndTimedEvent("Article_Read");
在幫助文檔中說flurry不會即時收集信息,而是數小時收集一次。所以在執行數次之後發現得過將近兩小時之後數據纔會刷新。
Distimo ( http://www.distimo.com/app-analytics)
部署:
在https://analytics.distimo.com/settings/sdk頁面中首先添加一個SDK Key,然後下載Distimo SDK,然後添加dll引用即可。
程序初始化:
在App.xaml.cs的Launching中添加:
Distimo.SDK.start("eXrliTTWXO2PN1Zg");
在Activated中添加:
Distimo.SDK.start("eXrliTTWXO2PN1Zg");
添加Capability
Identity_Device
Identity_User
Networking
WebbrowserComponent
功能:
可以在程序中添加log:
Distimo.SDK.logBannerClick("Button is clicked");
此爲點擊廣告欄的log,還有內購log,用戶註冊log等。
備註:
此框架需要在已經上架的應用上測試,因此我建立了一個beta版本的應用上傳到store上。文檔中還說該應用應該通過url重新下載到手機或模擬器中,在運行兩個小時之後會在dashboard中顯示該應用的信息。
大約2小時之後我在SDK界面看到了相關應用的名稱。如果該應用已經提交到市場,則顯示名稱,否則顯示ID。但是由於沒有真正進入市場(我提交的beta版),還是不能生成applick,進而觀測相應log數據。
此框架的最大用處是通過綁定應用發佈者的賬號,來觀測已經上架的應用的下載使用等信息,但是在檢測crash信息,跟蹤trace方面還是有不足。
MarkedUp (http://blog.markedup.com/2013/06/available-now-markedup-analytics-for-windows-phone-8/ )
部署:
首先生成App API Key,然後安裝SDK。可以下載壓縮包(http://mkproduction.blob.core.windows.net/windowsphone8/MarkedUp(WP8).1.2.0.zip)把dll添加到引用中,也可以在nuget中輸入Install-Package MarkedUp
來添加引用。
程序初始化:
在App.xaml.cs的Launching中添加:
AnalyticClient.Initialize("9505fd5f-59ba-4ed7-a25c-c7245fd3d1ab");
添加Capability
Identity_Device
Networking
功能:
添加Event
var ps = new Dictionary<string, string>() { { "Parameter1", "Value" }, { "Parameter2", "Value" } };
MarkedUp.AnalyticClient.SessionEvent("{Name of Your Custom Event}", ps);
而其他的方法在文檔中都沒有標註可以在wp中使用,而只標註了win8可用。
Telerik Eqatec( http://visualstudiogallery.msdn.microsoft.com/dec7df15-ddaf-442a-accf-db0d61b00a18)
部署:
下載壓縮包(http://www.telerik.com/analytics/docs/default-source/monitor-files/analyticsmonitorwp_3_2_7.zip?sfvrsn=30&download=true)將dll添加引用即可。
程序初始化:
在程序開始時添加:
IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor("YOUR-PRODUCT_KEY");
monitor.Start();
功能:
Event的監視,開始,停止,和取消。
易用性:Markedup > Distimo> Localytics 〉Bugsense > Eqatec 〉 Flurry
即時性:Markedup > Localytics 〉Bugsense 〉Distimo〉 Flurry
性價比:Bugsense 〉 Localytics > Markedup > Distimo〉Flurry
總的說來,Bugsense和Markedup表現令人滿意,無論是在trace追蹤方面,還是數據收集和可視化方面都可圈可點。Localytics相比較而言就有一種高大上的感覺,在多方面都可以說是非常棒的,但是價格也相對較貴,從合作公司看也可見一斑。Distimo適用的方面似乎不在event trace,或者說這方面的功能很弱,而是在上架應用的信息收集上。它可以對廣告,盈利,排名,甚至評論的收集和翻譯進行處理,進而反饋給開發者一個統觀全局的視野。Flurry這個雖然說免費,但是實時性實在難以恭維,而且數據的收集較上述的框架來說比較簡陋,沒有亮點但是可以滿足基本的數據收集分析的需求。Eqatec,能力只能說稍稍高過distimo,沒法和bugsense,markedup,localytics比較。整個api是適用於.Net系統的,沒有針對wp8的系統設計。從網頁的截圖來看,數據分析也是其它框架都有的。所以可以說沒有選擇的必要。