Firebase Analyticsへの移行に向けて
iOS/Androidアプリ向けGAの終了の通知があり、お早めに Firebase SDK でアプリをトラッキングするように移行していただけますようお願いいたします。
とアナウンスがあったころから、携わっているiOSアプリのプロジェクトでもFirebase Analyticsへの移行に向けての調査を進めており、調査でわかったことをまとめていきたいと思います。
画面の自動追跡
Firebase Analytics(以下「FA」)が、GAと大きく違う点に自動の画面追跡機能があります。
GAではviewDidAppearなどのタイミングで、専用のメソッドをコールして手動でスクリーン名を送信していましが、FAでは画面追跡のイベント(screen_viewイベント)が自動で送信されます。
※FAでは、現在フォーカスされているUIViewControllerのクラス名など、アプリケーション内の画面に関する一部の情報を自動的に追跡しています。
なお、送信されたscreen_viewイベントの値はFirebase ConsoleのAnalyticsのEventsで
確認できます。(※以下の画像をご参照ください。)
<自動送信された画面のUIViewControllerクラス名>
ちょっと表示が切れていますが、上記の画像を見ると、ViewControllerのクラス名が自動的に送信され、スクリーンクラスに表示されているのがわかります。
画面自動追跡の設定手順
参照:Get Started with Google Analytics for Firebase for iOS
上記を参照し、進めていけばOKです。手順の大まかな方法は、以下の通りです。(2019/5/20時点)
1.'Firebase/Analytics'をpodでインストールする
pod 'Firebase/Analytics'
2.application:didFinishLaunchingWithOptions:
でFirebaseライブラリの設定を行う
import Firebase
// (途中省略)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
// (途中省略)
return true
}
注意: 既存のプロジェクトでスクリーンクラスが(not set)になる
新規プロジェクトでFAを導入する場合は、上記の設定手順で問題なく画面が自動追跡され、スクリーンクラスがfirebase consoleでも表示されたのですが、既存プロジェクトにFAを導入したところ、firebase consoleで表示されるスクリーンクラスが(not set)になる現象が発生しましたので、対応方法をまとめます。

原因がわからずいろいろ設定を見直したところ、以下のInfo.plistの項目が原因でした。
<key>FirebaseAutomaticScreenReportingEnabled</key>
<false/>
既存のプロジェクトでFirebase Analyticsは利用していなかったのですが、Firebaseの別のサービスFirebase Cloud Messagingを利用していました。
どの過程でFirebaseAutomaticScreenReportingEnabledの項目がInfo.plistに設定されたのか、なかなか追えなかったのですが、FirebaseAutomaticScreenReportingEnabledの項目を除去するかtrueを設定すると、画面の自動追跡が有効になりFirebase consoleでスクリーンクラスが表示されるようになります。
(新規プロジェクトにFAを導入した際は、Info.plistのFirebaseAutomaticScreenReportingEnabledの設定が無かったので、画面の自動追跡を行う場合は不要かと思います。)
今回はFirebase Analyticsの画面自動追跡の内容でしたが、引き続き調査した内容を今後もQiitaにまとめていく予定です。