3
5

More than 5 years have passed since last update.

[めも]Firebase Analyticsを無効にしたい時

Last updated at Posted at 2017-01-05

(なぜ有効にしたい場合じゃないのか、と突っ込まれそうですが)

Firebase Analyticsを無効にしたい場合の設定

マニフェストで設定する場合

[Analytics の収集を無効にする]
https://firebase.google.com/support/guides/disable-analytics

収集を一時的に無効にする場合 (この設定の場合は、プログラム上で有効に変更可能)

<meta-data android:name="firebase_analytics_collection_enabled" android:value=false />

収集を完全に無効にする場合

<meta-data android:name="firebase_analytics_collection_deactivated" android:value=true />

プログラム上で有効・無効を切り替える場合

FirebaseAnalyticsクラスの setAnalyticsCollectionEnabled() メソッドをを呼び出します。

と、ここまではドキュメントの引用ですが・・・

firebase_analytics_collection_deactivatedが正しく反映されなかった時期があるらしい

Stackoverflow - Disable the Analytics service for Firebase Cloud Messaging

ということで、実験してみました。(Google servicesのバージョン:9.8.0)

※10.0.0は、つい最近まで、一部のデバイスでダウンロードできない時期があったので、9.8.0で実験しています。(今回は、minSdkの確認も兼ねた実験の一部だったので、API10の実機を使用しています。)
使用ライブラリは、
play-services-base、play-services-auth、play-services-drive
のみです。

firebase_analytics_collection_deactivated を true に設定した場合

I/FA: Collection disabled with firebase_analytics_collection_deactivated=1

がログに出力されます。

firebase_analytics_collection_deactivated を false に設定した場合

V/FA: Collection enabled
V/FA: App package, google app id: (略)

がログに出力されます。

firebase_analytics_collection_enabled を false に設定した場合

I/FA: Collection disabled with firebase_analytics_collection_enabled=0

がログに出力されます。

従って、現在は、Firebase Analyticsを無効にしたい場合は、firebase_analytics_collection_deactivatedをtrueに設定するのが正解のようです。
(または、firebase_analytics_collection_enabledをfalseに設定)
書き間違えていないか、何度も見直してしまいそうですが・・

AppMeasurementなどが動いている?

一見すると、(ログ上では)deactivatedなどの部分は正しく動作しているように見えますが・・・
実験用に(System.exit()などで)アプリを強制停止させると、3パターンともに、
次のようなログが出力されます。
※Google servicesを使っているアプリのみの現象です。
※Firebase関連のAPIは、サーバ側で無効にしてあります。

I/ActivityManager: Start proc (パッケージ名) for broadcast (パッケージ名)/com.google.firebase.iid.FirebaseInstanceIdInternalReceiver:(略)
・・・
D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
・・・
D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
・・・
I/FA: App measurement is starting up, version: 9877
・・・
I/FA: To enable faster debug mode event logging run:
adb shell setprop firebase.analytics.debug-mode (パッケージ名)
・・・
I/dalvikvm: Could not find method android.database.Cursor.getType, referenced from method com.google.android.gms.measurement.internal.(略)
・・・
V/FA: Using measurement service
V/FA: Connecting to remote service
D/FA: Connected to remote service
D/FirebaseInstanceId: background sync failed: SERVICE_NOT_AVAILABLE, retry in 60s
D/FirebaseInstanceId: background sync failed: SERVICE_NOT_AVAILABLE, retry in 30s

AppMeasurementが動いていると、何か問題が?

[AppMeasurement]
https://developers.google.com/android/reference/com/google/android/gms/measurement/AppMeasurement

This class was deprecated.
Use FirebaseAnalytics instead.

ということで、AppMeasurementは、FirebaseAnalyticsの一部になっているかと思います。
なので、配布地域によっては、法律やToSの内容などに配慮が必要になるかな・・と。

また、(AppMeasurement単体の問題ではないように思いますが)
SERVICE_NOT_AVAILABLEの場合に、数十秒間隔でリトライしている点も気になります。

(本当は、強制終了したはずのプロセスが、なぜ残っているのか気になって実験した・・というのは置いておいて。)

プログラム上でFirebase Analyticsを無効に切り替える場合の問題

setAnalyticsCollectionEnabled(false)を呼びたいだけなのに・・
FirebaseAnalytics.getInstance()の部分で、WAKE_LOCKなどの
パーミッションが必要と表示されてしまいます。(ビルドは通るようです)

また、無効にするために、無効にしたいもののインスタンスを作る・・ことになるので、
マニフェストで設定する方法の方が良さそうです。

補足:
依存関係にfirebase-iidが(間接的に)入っていれば、マージ後のマニフェストに、
必要なパーミッションが追加されるかと思いますが、
FirebaseAnalytics.getInstance()のアノテーションで、
"android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" が必須となっているために発生する現象です。
なので、実害は無さそう??

Stackoverflow - FirebaseAnalytics.getInstance showing warning but compiles successfully

蛇足 Google開発者サービス(Google play services)がサポートする環境は、バージョン10.2.x以降、API14になるとのこと。

ちなみに、flavor間でplay-servicesのバージョンを切り替えようとすると、すごくはまります。
(バージョンがコンフリクトを起こしたり・・)
なので、早めに準備しておいた方がよさげです。

[Google Play Services - Release Notes (November 2016 - v.10.0)]
https://developers.google.com/android/guides/releases

Android version 2.3.x (Gingerbread) Deprecation
Google Play services 10.0.x is the final release that includes full support for Android version 2.3.x (Gingerbread).

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5