📈

FirebaseコンソールのAnalytics Dashboardにログ情報が全く反映されない問題

に公開

概要

iOSアプリでFirebase Analyticsを導入した際、
FirebaseコンソールのAnalytics Dashboardにログ情報が全く反映されない問題にあたりました。

前提条件は以下の通りです。

  • Firebase SDKはSPMでインストール
  • Google-ServiceInfo.plistは問題なし
  • DebugViewではタップやスクロールが検知できており問題なし
  • アプリ内でAnalytics.logEvent(), Analytics.setUserProperty()などは未使用
    • Dashboardから見れる情報のみで十分だったため

解決方法

FirebaseApp.configure()の後に
Analytics.setAnalyticsCollectionEnabled(true)を明示的に呼ぶことで解決しました。

エントリポイント

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
    ) -> Bool {
        FirebaseApp.configure()
        Analytics.setAnalyticsCollectionEnabled(true) // これを追加
        return true
    }
}

@main
struct AIFrameApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    ...
}

アプリ内でAnalytics.logEvent(), Analytics.setUserProperty()などを使用していないと、
firebase-ios-sdk/FirebaseCore/Sources/FIRApp.mにある
configureCoreメソッド内でFIRAnalytics(Firebase Analyticsのトップレベルシングルトンクラス)が初期化されず、データが送信されなくなるのが原因のようでした。

参考リンク

https://stackoverflow.com/questions/67702581/why-i-need-to-set-analytics-setanalyticscollectionenabledtrue-if-it-is-true-as
https://github.com/firebase/firebase-ios-sdk/blob/c105a0de10726acb4daf1ec6dc29a7fcd9aea4a6/FirebaseCore/Sources/FIRApp.m#L351

GitHubで編集を提案

Discussion