最近在公司没什么事可做,老大就让我去调查几种应用数据收集的框架。
我给整理成了一份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的系统设计。从网页的截图来看,数据分析也是其它框架都有的。所以可以说没有选择的必要。