Firebase Analyticsの動作をいろいろ調べてわかったことなどをメモしていく。 特に注釈が無いものはAndroid上で動作確認したもの。
- デフォルトイベント(デフォルトパラメータ)
- Firebase Analyticsが用意してくれているイベントやパラメータのこと。
FirebaseAnalytics.Event.*
やFirebaseAnalytics.Param.*
のこと。
- Firebase Analyticsが用意してくれているイベントやパラメータのこと。
- カスタムイベント(カスタムパラメータ)
- 独自で指定したイベント名やパラメータ名
Firebase Android SDK Release Notes | Firebase
v9.6からRequiresPermission
が指定されている。
public final class FirebaseAnalytics {
private final zzx anq;
@RequiresPermission(
allOf = {"android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK"}
)
public static FirebaseAnalytics getInstance(Context var0) {
return zzx.zzdt(var0).zzbwz();
}
じゃあv9.6からGoogle Play Serviceなしでも送信できるようになったのか?という話になるけれどログを見るとv9.4から送信自体はされている感じがあるので、単に入力漏れのような気がなくもない。 ログの出方はv9.6からちょっと変わっている。
パラメータに対して「文字列」を送りたい場合はputString()
、「数値」を送りたい場合はputInt()
で送る。
デフォルトパラメータであっても、自動変換はしてくれない(調査しきれてないが、きっとそう)。
Bundle bundle = new Bundle();
bundle.putInt("value", 1); // 数値で集計される
mAnalyticsManager.logEvent("num1", bundle);
Bundle bundle = new Bundle();
bundle.putInt("value", "1"); // 文字列で集計される
mAnalyticsManager.logEvent("num2", bundle);
数値か文字列かどうかが現時点で関係するのは、ユーザーリスト作成時の条件付けとコンソール画面のイベント一覧の「値」の部分。
- 送られてきたパラメータの「数値」が合計されたものが表示される
- 1つのパラメータに対して「数値以外」が1つでも送られると合計値は出てこなくなる
- パラメータが複数送られると合計値が出てこなくなる。全てのパラメータで送られる値が「数値」でも同様
これに限った話ではないが、デフォルトパラメータであろうとなんだろうとパラメータの内部をコンソールで確認することは不可能(たぶんBigQueryを使えってこと)なのを頭に入れておく。
ユーザーリストなどを作成する際に、勝手に推奨パラメータとして選択肢が出てくるので管理しやすい。(カスタムパラメータは現在候補でいっさいでてこない)。 組み合わせは決まっているので、イベントとプロパティ - Firebase ヘルプ を参考に設定すること。
むしろ現状は欲しいカスタムイベントに加え、ヘルプで指定されているイベントも可能な限り送るように設定したほうが良さ気。
コンソール画面の「ユーザープロパティ」でも同様のものを設定しないと、フィルタ表示等ができない。
設定した条件が「設定した日より前から当てはまるユーザーがいたとしても」、カウントが開始されるのは設定した日以降(のはず)。
パラメータ設定が正しくても集計できないケースがある。恐らく該当ユーザーが10人以下だと集計が開始されない。
FirebaseAnalytics.setAnalyticsCollectionEnabled(false)
でAnalyticsへの送信を止めることができる。
FA
タグで出力されている
# 例
10-04 16:31:20.627 6164-6208/io.github.yamacraft.app.fanfan V/FA: Connecting to remote service
10-04 16:31:20.636 6164-6208/io.github.yamacraft.app.fanfan D/FA: Setting app measurement enabled (FE): true
10-04 16:31:20.636 6164-6208/io.github.yamacraft.app.fanfan V/FA: Setting measurementEnabled: true
10-04 16:31:20.636 6164-6208/io.github.yamacraft.app.fanfan V/FA: Using measurement service
10-04 16:31:20.636 6164-6208/io.github.yamacraft.app.fanfan V/FA: Connection attempt already in progress
10-04 16:31:20.710 6164-6164/io.github.yamacraft.app.fanfan V/FA: onActivityCreated
10-04 16:31:20.788 6164-6208/io.github.yamacraft.app.fanfan D/FA: Setting user property (FE): _id, dab2f0a2-8089-4e2e-a3de-ac3bcf5d5ead
10-04 16:31:20.789 6164-6208/io.github.yamacraft.app.fanfan V/FA: Using measurement service
10-04 16:31:20.789 6164-6208/io.github.yamacraft.app.fanfan V/FA: Connection attempt already in progress
10-04 16:31:20.793 6164-6208/io.github.yamacraft.app.fanfan D/FA: Setting user property (FE): DeviceName, Android-Android SDK built for x86_64
10-04 16:31:20.794 6164-6208/io.github.yamacraft.app.fanfan V/FA: Using measurement service
10-04 16:31:20.794 6164-6208/io.github.yamacraft.app.fanfan V/FA: Connection attempt already in progress
10-04 16:31:20.797 6164-6208/io.github.yamacraft.app.fanfan V/FA: Activity resumed, time: 280902
各パラメータの役割はリファレンス見たほうが良い。
FirebaseAnalytics.setUserId()
は、設定してもコンソール画面上で確認できる手段はなかった。もしかしたら同一IDを指定することで、複数端末からの送信を1つのユーザーとして扱わせることができるのかもしれない。