コンテンツにスキップ

他社の行動解析ツールでイベントを送信する

各サービスに向けたイベント送信の実装

jp.co.infocity.richflyer.util.RFEventLogSenderクラスを継承して、各サービス向けに定義されたメソッドの中でそれぞれイベント送信処理を記述します。

import jp.co.infocity.richflyer.event.LogEvents;

public class RFEventLogSender extends LogEvents {
    @Override
    public void logForFirebase(String name, Bundle param) {
        //OverrideしてFirebaseへイベントログを送るコードを書く
    }

    @Override
    public void logForGoogle(String name, Bundle param) {
        //OverrideしてGoogleへイベントログを送るコードを書く
    }

    @Override
    public void logForFacebook(String name, Bundle param) {
        //OverrideしてFacebookへイベントログを送るコードを書く
    }

    @Override
    public void logForFlurry(String name, Bundle param) {
        //OverrideしてFlurryへイベントログを送るコードを書く
    }
}

イベント送信処理を実装するときは、それぞれ各サービスが提供しているSDKの以下のメソッド等を呼びます。

Firebase Analytics

クラス: FirebaseAnalytics

void logEvent (String name, Bundle params);

Google Analytics

クラス: Tracker

void send (Map<String, String> params);

Facebook Analytics

クラス: AppEventsLogger

void logEvent(String eventName, Bundle parameters);

Flurry Analytics

クラス: FlurryAgent

static FlurryEventRecordStatus logEvent(String eventId, Map<String,String> parameters);

イベント送信の実装

イベントを送信するときは、RichFlyerクラスのregisterEvent()メソッドを呼びます。

//RichFlyerクラス
static void registerEvent(String eventId, Bundle params, RFEventLogSender sender, Context context)
パラメータ 内容
eventId イベント名を指定。
params それぞれのSDKに渡すパラメータ
※Google Analyticsを利用する場合は、"action"と"label"を含める必要があります。同時に他の解析サービスを利用している場合は、そちらへも同じパラメータが送信されます。
※パラメータの詳細については各リファレンスをご参照ください。
sender RFEventLogSenderの実装クラス。他社行動解析ツールのイベント送信処理が実装される。
Context アプリケーションのContext

実装例

Firebase Analytics

初期化
import android.app.Application;
import com.google.firebase.analytics.FirebaseAnalytics;

public class SampleApplication extends Application {

    public static FirebaseAnalytics mFirebaseAnalytics;

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

        //Firebase Analyticsの初期化
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    }
}
イベント送信処理
import android.os.Bundle;
import jp.co.infocity.richflyer.util.RFEventLogSender;
import jp.co.infocity.richpushsampleapp.SampleApplication;

public class EventLogSender extends RFEventLogSender {

    @Override
    public void logForFirebase(String name, Bundle param) {
        SampleApplication.mFirebaseAnalytics.logEvent(name, param);
    }

    @Override
    public void logForGoogle(String name, Bundle param) {
    }

    @Override
    public void logForFacebook(String name, Bundle param) {
    }

    @Override
    public void logForFlurry(String name, Bundle param) {
    }

}


Google Analytics

初期化
import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;

public class SampleApplication extends Application {

    public static Tracker mGoogleAnalytics;

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

        //Google Analyticsの初期化
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        mGoogleAnalytics = analytics.newTracker(R.xml.google_tracker);
    }

}
イベント送信処理
import android.os.Bundle;
import jp.co.infocity.richflyer.util.RFEventLogSender;
import jp.co.infocity.richpushsampleapp.SampleApplication;

public class EventLogSender extends RFEventLogSender {

    @Override
    public void logForFirebase(String name, Bundle param) {
    }

    @Override
    public void logForGoogle(String name, Bundle param) {
      String action = param.getString("action");
      String label = param.getString("label");
      SampleApplication.mGoogleAnalytics.send(new HitBuilders.EventBuilder()
                       .setCategory(name)
                       .setAction(action)
                       .setLabel(label)
                       .setValue(1)
                       .build());
    }

    @Override
    public void logForFacebook(String name, Bundle param) {
    }

    @Override
    public void logForFlurry(String name, Bundle param) {
    }

}


Facebook Analytics

初期化
import android.app.Application;
import com.facebook.appevents.AppEventsLogger;

public class SampleApplication extends Application {

    public static AppEventsLogger mFacebookEventLogger;

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

        //Facebook Analyticsの初期化
        AppEventsLogger.activateApp(this);
        mFacebookEventLogger = AppEventsLogger.newLogger(this);
    }
}
イベント送信処理
import android.os.Bundle;
import jp.co.infocity.richflyer.util.RFEventLogSender;
import jp.co.infocity.richpushsampleapp.SampleApplication;

public class EventLogSender extends RFEventLogSender {

    @Override
    public void logForFirebase(String name, Bundle param) {
    }

    @Override
    public void logForGoogle(String name, Bundle param) {
    }

    @Override
    public void logForFacebook(String name, Bundle param) {
        SampleApplication.mFacebookEventLogger.logEvent(name, param);
    }

    @Override
    public void logForFlurry(String name, Bundle param) {
    }
}


Flurry Analytics

初期化
import android.app.Application;
import com.flurry.android.FlurryAgent;

public class SampleApplication extends Application {

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

        //Flurry Analyticsの初期化
        new FlurryAgent.Builder()
                .withLogEnabled(true)
                .build(this, "Flurry発行のAPIキー");
    }

}
イベント送信処理
import android.os.Bundle;
import com.flurry.android.FlurryAgent;
import java.util.HashMap;
import java.util.Map;
import jp.co.infocity.richflyer.util.RFEventLogSender;
import jp.co.infocity.richpushsampleapp.SampleApplication;

public class EventLogSender extends RFEventLogSender {

    @Override
    public void logForFirebase(String name, Bundle param) {
    }

    @Override
    public void logForGoogle(String name, Bundle param) {
    }

    @Override
    public void logForFacebook(String name, Bundle param) {
    }

    @Override
    public void logForFlurry(String name, Bundle param) {
        Map<String, String> paramMap = new HashMap<String, String>();

        for (String key : param.keySet()) {
            paramMap.put(key, param.getString(key));
        }
        FlurryAgent.logEvent(name, paramMap);
    }
}

イベントの送信(全SDK共通)

イベント送信
public class SampleActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //各Analyticsサービスにボタンが押されたログを送信する。
                //Google Analytics向けにパラメータにaction, labelを含ませる
                Bundle eventParam = new Bundle();
                eventParam.putString("action", "tap");
                eventParam.putString("label", "fab");

                //第3引数にはRFEventLogSenderを継承して作った
                //各サービスへのイベント送信処理を実装したクラスのインスタンスを渡す
                RichFlyer.registerEvent("PushButton", eventParam, new EventLogSender(), getApplicationContext());

            }
        });
    }