Piwik-SDK浅谈,


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我也是处于摸索使用的状态,如果文章有何错误欢迎指正讨论。

相关内容

    暂无相关文章