Piwik是一个简洁强大的开源框架,其作用在此不作过多介绍。本文主要浅谈Piwik-SDK在Android平台上的应用和一些总结,希望对大家有所帮助。
这是Piwik-SDK的github地址:https://github.com/piwik/piwik-sdk-android
SDK上的配置介绍比较简单:
1、 在你的项目上依赖Piwik的jar包;
compile 'org.piwik.sdk:piwik-sdk:2.0.0'
出于需要修改SDK的原因,本人是以Model的形式导入的。Model导入时记得在gradle加入SDK的外部变量。
ext {
globalMinSdkVersion = 10
globalTargetSdkVersion = 25
globalCompileSdkVersion = 25
globalBuildToolsVersion = '25.0.2'
supportLibVersion = '25.3.1'
timberVersion = '4.5.1'
}
2、 扩展piwikapplication类或自定义application并实现SDK的相关方法;
public class YourApplication extends Application {
private Tracker tracker;
publicsynchronized Tracker getTracker() {
if (tracker ==null) tracker = Piwik.getInstance(this).newTracker(new TrackerConfig("http://domain.tld/piwik.php", 1));
return tracker;
}
}
我是直接将PiwikApplicatin的方法添加到项目的自定义application中,这样比较方便。这里实例化TrackerConfig对象时需要传入你的服务器地址,这个地址就是你观测、分析数据的页面,具体内容参照官网说明。
3、 开始使用。
Tracker tracker = ((PiwikApplication) getApplication()).getTracker();
TrackHelper.track().screen("/activity_main/activity_settings").title("Settings").with(tracker);
看到这里我是比较懵逼的,什么情况下该使用什么方法,每个方法,每个参数的具体作用是什么,文档都没有说明清楚。官网对Web端的使用说明倒是相当地详细,所以我只能从SDK摸索着入手,以下是我所总结的几个点:
1、 screen()
该方法用于追踪一个页面,入参是页面路径,其实可以根据个人需要拼接参数。我们也可以调用title()方法为该页面设置标题,最后调用with()的方法上传数据。简单来说就是:
TrackHelper.track().screen("路径")
.title("标题")
.with(getTracker());
2、 event()
该方法用于追踪某一事件,入参是事件分类和事件动作。SDK提供了name、value等方法来保存事件的相关标签信息。
TrackHelper.track().event("事件分类","事件动作")
.name("标签信息")
.value(10f)
.with(getTracker());
3、 加入购物车
我们需要先实例化一个EcommerceItems对象,当把一个商品加入购物车时,我们可以调用name、category、price、等方法记录商品的名称、分类、价格等信息,然后通过addItem将商品信息保存在EcommerceItems中,最后汇总上传数据。例子如下:
EcommerceItems items = new EcommerceItems();
items.addItem(new EcommerceItems.Item(skus.get(index))
.name(names.get(index))
.category(categories.get(index))
.price(prices.get(index))
.quantity(quantity));
TrackHelper.track().cartUpdate(8600)
.items(items)
.with(getTracker());
以上统计加入购物车的五个参数都是必传参数,否则Piwik无法显示出正确的价格、销量等数据。Cartupdate()的入参是一个购物车的总金额,在这里需要注意的是里面的价格都是以美分为单位计算,想要得到准确的结算金额,你可以传入参数时作小数点控制,或者修改Piwik-SDK里的CurrencyFormatter类的priceString方法。
4、 追踪订单
我们可以调用order()追踪一个订单的相关信息,入参是一个随机订单号和订单总金额。此外,它还提供subTal、tax、shipping等方法保存小计、税金、运费等信息,代码如下:
TrackHelper.track()
.order(String.valueOf(10000 * Math.random()), 10000)
.subTotal(1000)
.tax(2000)
.shipping(3000)
.discount(500)
.items(items)
.with(getTracker());
假如你需要分析类似订单转化率这些数据,加入购物车和追踪订单的方法就要配合使用,否则在Piwik数据观察页面会出现一个“被放弃的购物车”,Piwik也无法自动分析出转化结果。
5、 自定义变量
自定义变量可以用来统计锚点但不限于此,它的用途最终还是取决于你的需求。
我使用了两种方式来保存自定义变量:
(1) 在捕捉页面时保存并上传:
TrackHelper.track().screen("页面")
.variable(1,"key","value")
.with(getTracker());
(2) 在追踪事件时保存并上传:
CustomVariables customVariables = new CustomVariables();
customVariables.put(1, "key", "value");
TrackHelper.track().visitVariables(customVariables)
.event("事件分类", "事件动作")
.name("name")
.with(getTracker());
需要注意的是,每次最多只能定义5个变量(可以在观测页面修改数量限制),并且每次上传数据时相同ID的变量值会把上一个变量值覆盖。所以,当我们要使用自定义变量来统计锚点数据时,我建议在前面的节点保存数据,在最后需要的节点上传数据,这样可以达到保存N级锚点的效果。目前对于Piwik-SDK我也是处于摸索使用的状态,如果文章有何错误欢迎指正讨论。