Android項目中使用piwik統計埋點

Android項目中使用piwik統計埋點

一.概述

piwik應該是我接觸的第一個統計埋點sdk瞭.piwik功能和其他主流統計sdk差不多,這裡就不多說瞭。

感覺android使用piwik的也不多,這裡就隻做下簡單的使用瞭。好瞭,看代碼吧!

二.實現

1.導入sdk代碼

piwik的jar沒找到,我是直接把核心代碼拷到項目中瞭

2.自定義Application繼承PiwikApplication

首先繼承PiwikApplication實現相關方法
這裡寫圖片描述

public class DemoApp extends PiwikApplication {

    @Override
    public String getTrackerUrl() {
        //服務器地址
        return "https://demo.piwik.org/";
    }

    @Override 
    public Integer getSiteId() {
        return 9;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        initPiwik();
    }

這裡實現瞭getTrackerUrl()配置服務器地址,就是數據上傳地址。
getSiteId()返回配置Piwik檢測項ID,可用作區分生產和測試。

 private void initPiwik() {
        // Print debug output when working on an app.
        1). Timber.plant(new Timber.DebugTree());
        // When working on an app we don't want to skew tracking results.
        2). getPiwik().setDryRun(false);
        // If you want to set a specific userID other than the random UUID token, do it NOW to ensure all future actions use that token.
        // Changing it later will track new events as belonging to a different user.
        // String userEmail = ....preferences....getString
        3). getTracker().setUserId("");
        // Track this app install, this will only trigger once per app version.
        // i.e. "https://com.piwik.demo:1/185DECB5CFE28FDB2F45887022D668B4"
        4). TrackHelper.track().download().identifier(DownloadTracker.Extra.APK_CHECKSUM).with(getTracker());
        // Alternative:
        // i.e. "https://com.piwik.demo:1/com.android.vending"
        // getTracker().download();
    }

1)配置調試信息
2)防止測試數據混淆正式數據
3)為用戶設置唯一ID,方便追蹤單個用戶數據
4)統計APP下載量

3.在activity中調用

/*
 * Android SDK for Piwik
 *
 * @link https://github.com/piwik/piwik-android-sdk
 * @license https://github.com/piwik/piwik-sdk-android/blob/master/LICENSE BSD-3 Clause
 */

package com.example.piwikdemo;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

import butterknife.OnClick;

import java.util.Arrays;
import java.util.List;

import org.piwik.sdk.PiwikApplication;
import org.piwik.sdk.TrackHelper;
import org.piwik.sdk.Tracker;
import org.piwik.sdk.ecommerce.EcommerceItems;

public class MainActivity extends ActionBarActivity {
    int cartItems = 0;
    private EcommerceItems items;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo);
        // ButterKnife.bind(this);
        items = new EcommerceItems();
        TrackHelper.track().screen("P_main").title("主界面").with(getTracker());
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    private Tracker getTracker() {
        return ((PiwikApplication) getApplication()).getTracker();
    }

    @OnClick(R.id.trackMainScreenViewButton)
    void onTrackMainScreenClicked(View view) {
        /**
         * .screen(String path) 跟蹤一個screenview .title(String title)
         * 標題行動被跟蹤,可以使用斜杠/設置一個或多個類別的行動。
         */
        TrackHelper.track().screen(this).title("Main screen").with(getTracker());
    }

    public void onButtonClick(View view) {
        switch (view.getId()) {
        case R.id.btntest:
            // 跟蹤事件
            TrackHelper.track().event("事件分類", "事件動作").name("事件名字").value(10f).with(getTracker());
            Intent intent = new Intent(this, TestActivity.class);
            startActivity(intent);
            break;
        case R.id.btntest1:
            // 跟蹤內容板塊
            TrackHelper.track().impression("play").piece("music").target("gameover").with(getTracker());
            Intent intent1 = new Intent(this, TestActivity.class);
            startActivity(intent1);
            break;
        case R.id.trackCustomVarsButton:
            // 跟蹤activity
            TrackHelper.track().screen(this).title("登錄").variable(1, "輸入手機號耗時", "50s")
                    // .variable(2, "second", "long value")
                    .with(getTracker());
            break;
        case R.id.raiseExceptionButton:
            // 跟蹤異常
            TrackHelper.track().exception(new Exception("OnPurposeException")).description("Crash button").fatal(false)
                    .with(getTracker());
            break;
        case R.id.trackGoalButton:
            float revenue;
            try {
                revenue = Integer.valueOf(((EditText) findViewById(R.id.goalTextEditView)).getText().toString());
            } catch (Exception e) {
                TrackHelper.track().exception(e).description("wrong revenue").with(getTracker());
                revenue = 0;
            }
            /*
             * 如果你想手動觸發轉換或跟蹤一些用戶交互trackGoal簡單調用方法 .goal(int idGoal)
             * 跟蹤請求將觸發轉換的目標網站用這個ID被跟蹤 .revenue(Float revenue)
             * 生成一個貨幣價值由這一目標收入的轉換。
             */
            TrackHelper.track().goal(66).revenue(revenue).with(getTracker());
            break;
        default:
            break;
        }
    }

    @OnClick(R.id.addEcommerceItemButton)
    void onAddEcommerceItemClicked(View view) {
        /**
         * Piwik提供電子商務分析,讓你衡量物品添加到購物車,並學習有關廢棄的車和采購訂單的詳細指標
         */
        List skus = Arrays.asList("00001", "00002", "00003", "00004");
        List names = Arrays.asList("Silly Putty", "Fishing Rod", "Rubber Boots", "Cool Ranch Doritos");
        List categories = Arrays.asList("Toys & Games", "Hunting & Fishing", "Footwear", "Grocery");
        List prices = Arrays.asList(449, 3495, 2450, 250);

        int index = cartItems % 4;
        int quantity = (cartItems / 4) + 1;

        items.addItem(new EcommerceItems.Item(skus.get(index)).name(names.get(index)).category(categories.get(index))
                .price(prices.get(index)).quantity(quantity));
        cartItems++;
    }

    @OnClick(R.id.trackEcommerceCartUpdateButton)
    void onTrackEcommerceCartUpdateClicked(View view) {
        /*
         * Tracks a shopping cart. 跟蹤一個購物車。 .cartUpdate(int grandTotal) 物品總數
         * .items(EcommerceItems items) 購物車中的物品
         */
        TrackHelper.track().cartUpdate(8600).items(items).with(getTracker());
    }

    @OnClick(R.id.completeEcommerceOrderButton)
    void onCompleteEcommerceOrderClicked(View view) {
        /*
         * .order(String orderId, int grandTotal) 訂單ID 物品總數 subTotal(Integer
         * subTotal) 小計 tax(Integer subTotal) 稅 shipping(Integer subTotal) 配送費
         * discount(Integer subTotal) 訂單折扣
         */
        TrackHelper.track().order(String.valueOf(10000 * Math.random()), 10000).subTotal(1000).tax(2000).shipping(3000)
                .discount(500).items(items).with(getTracker());
    }

}

piwik的基本使用已經在代碼中瞭。我自己也隻使用瞭幾個基本的功能,其他復雜功能以後再加瞭。

You May Also Like