他社の行動解析ツールでイベントを送信する¶
各サービスに向けたイベント送信の実装¶
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の以下のメソッド等を呼びます。
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());
}
});
}