今回はiOS・AndroidでのFirebase関連の設定についてです。 Firebaseのサービスを使ってアプリを開発することは多いと思いますので、この機会にまとめようと思います。
プッシュ通知
プッシュ通知はFirebase Cloud Messagingを使うと思います。
プッシュ通知に関しては、次の記事でまとめていますので確認してください。
クラッシュログ調査
次にFirebase Crashlyticsについてです。
Firebase Crashlyticsはリリースされているアプリがクラッシュした際のログを飛ばしFirebaseのコンソールでクラッシュ内容を確認できる機能です。
ここからは今回はiOSとAndroidで設定方法が異なるのでそれぞれ見ていきます。
※これ以降はプッシュ通知で行ったFirebaseの設定は行なっているという前提で進めますのでご了承ください🙇♂️(FirebaseApp.configure()のコード記述やGoogle-service.jsonをプロジェクトに配置しているなど)
確認したい場合にはプッシュ通知の箇所で貼ったリンクを見てもらえると初期設定は記載しています。
iOS
まずはiOSでの設定方法についてです。
まずはライブラリをインストールしましょう。
pod 'Firebase/Crashlytics'
Crashlyticsを初期化するために、実行スクリプトをプロジェクトのBuild Phaseに追加します。
実行スクリプトを使用すると、アプリがクラッシュするたびにXcodeが自動的にプロジェクトのdSYMファイルをアップロードしてくれるため、Crashlyticsは自動的にクラッシュレポートを生成できます。
Xcodeのプロジェクトの[Build Phases]タブを選択し、+ > [New Run Script Phase]を選択し、Run Scriptに以下を記入します。
${PODS_ROOT}/FirebaseCrashlytics/run
次に、アプリのdSYMファイルとInfo.plistの場所を指定するために以下の2つをinput Filesに記入します。
アプリのdSYMの場所を、大規模なアプリに対するCrashlyticsの自動dSYM生成を高速化する入力ファイルとして追加します。
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
スクリプトの追加のイメージは以下です。

ここでdSYMファイルとは、簡単にいうとデバッグ情報ファイルのことです。
dSYMが有効にするためには次の手順を確認してください
- Xcode の
Project Navigatorで、プロジェクトを選択します。 - ターゲットリストで、アプリケーションを構築するターゲットを選択します。
Build Settingsタブを選択します。Build Optionsセクションで、Debugging Information FormatがDWARF with dSYM Fileに設定されていることを確認します。
dSYMファイルが欠落してクラッシュ情報を取得できない場合にはFirebaseのコンソールにアップロードを行ってください。
アップロードする場合にはビルドプロセスに次のスクリプトを追加するとビルド時に実行してくれます。
find dSYM_directory -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p platform \{\}
dSYMファイルをアップロードが正常終了しているかは次のようなビルドのログを見るとわかるので気になったら確認してください。 よくあるのはスクリプトに不要な空白が入っていてアップロードできていないパターンがあるので確認してみるといいかもしれません。

Android
次にAndroidでの設定についてです。 iOSほど複雑ではないので簡単に説明します。
Crashlyticsのライブラリを追加するだけです。 dSYMファイルなど必要ありません。
まずはFirebase Cloud Messagingを利用できるようにライブラリの追加を行います。ルートレベルのbuild.gradleに下記設定を追加します。
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.10'
}
}
そしてモジュールレベルのbuild.gradleに下記を追加します(Firebaseのバージョンをbomで管理しています)
dependencies {
implementation platform('com.google.firebase:firebase-bom:28.3.1')
implementation 'com.google.firebase:firebase-crashlytics'
}
アプリ解析
最後にFirebase Analyticsについてです。
Firebase Analyticsは、アプリの利用者に関するデータ分析やレポート集計を行います。 また、Firebase Analyticsはイベントベースで計測を行います。 ユーザーが特定のアクションを起こす度にデータに反映されるため、詳細に行動分析が行えます。 Firebaseのコンソールでイベントやユーザー情報など数値化したデータを確認できます。
iOS
まずはライブラリをインストールしましょう。
pod 'Firebase/Analytics'
また、シュミレーターから送信したイベントがみれるので、Xcodeに設定します。
Xcodeを開いて上部タブバーの[Product] > [Scheme] > [Edit scheme] > [Run]を開きます。
開いたらArguments Passed On Launchに-FIRAnalyticsDebugEnabledを追加します。
ここまでの設定とFirebaseの設定まで行った段階でデフォルトの情報はコンソールに表示されるようになります。 ここからはカスタムで情報を入れたい場合の対応になります。 次のようにAnalytics.logEventにイベント名と1対のkeyとValueになったパラーメータを設定することで送信できます。
Analytics.logEvent("イベント名", parameters: [
// パラメーターを設定
"パラメーターkey1": "パラメーターvalue1",
"パラメーターkey2": "パラメーターvalue2",
"パラメーターkey3": "パラメーターvalue3"
])
下記はデフォルトでで用意されているものを使用した例です。
Analytics.logEvent(AnalyticsEventSelectContent, parameters: [ AnalyticsParameterItemID: "id", AnalyticsParameterItemName: "Eventname", AnalyticsParameterContentType: "cont" ])
これらの設定を例えば、ボタンを押したタイミングや画面を表示したタイミングなどログを表示させたい場面に実装します。
ログを確認したい場合には、Firebaseコンソールの左メニュー [分析] > [DebugView]を開くとイベントが表示されます。
Android
Androidも同様にライブラリをインストールしてカスタムイベントが必要な場合には設定を行うだけです。
dependencies {
implementation platform('com.google.firebase:firebase-bom:28.3.1')
implementation 'com.google.firebase:firebase-analytics
}
// 発生させたいタイミングでイベントを送る(thisはcontext)
val firebaseAnalytics = FirebaseAnalytics.getInstance(this)
val bundle = Bundle()
bundle.putString("param1", "value")
firebaseAnalytics.logEvent("test_event", bundle)