【Swift/Firebase Analytics】ロギングの実装方法!カスタムイベントを発行

この記事からわかること

  • Swift/Firebaseイベントロギングする方法
  • Analytics使い方
  • カスタムイベント発行するには?
  • AnalyticsクラスlogEventメソッドの使い方
  • DebugView表示されない問題解決法
  • Swift UIでの実装方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Firebaseの概要や登録方法については下記記事を参考にしてください。

公式リファレンス:イベントをロギングする

イベントとは?

FirebaseではAnalytics機能を使用してアプリ内のイベントを観測することができます。イベントはあらかじめ定義されたものが自動で収集されています。

自動収集されているイベントは「Firebase」>「Analytics Dashboard」「イベント数」から確認することができます。ここに反映されるイベントはリアルタイムではなく、1日ほどラグがあるので注意してください。

【Swift/Firebase】ロギングの実装方法!カスタムイベントを発行

カスタムイベントとは?

そしてAnalyticsでは自動収集されているイベント以外にカスタムイベントを作成して観測することも可能となっています。カスタムイベントはアプリ内からコードで発行することができ、イベントの種類を自由に選べたり引数として様々な情報を持たせて発行することも可能になっています。

Analyticsでは最大500種類までのアナリティクスイベントをロギングできるようになっているようです。

今回はそのカスタムイベントをロギングする方法をまとめていきます。

※ちなみにロギング(Logging)とは「Log(記録データ)」を「ing(〜する)」で「データを記録すること」を指します。

DebugViewとは?

アプリから発生させたイベントはAnalyticsに反映されるまで時間がかかります。しかしこれではデバッグしたい時にイベントが発行できているか確認できません。リアルタイムでロギングしたい場合はFirebaseの「DebugView」を使用することで比較的少ないラグでイベントの発生を観測することが可能です。(それでもラグはあるので注意してください。)

【Swift/Firebase】ロギングの実装方法!カスタムイベントを発行

DebugViewでは自動収集しているイベントの発生タイミングとカスタムイベントの発生タイミングを時間の流れとともに確認できます。確認できるのは30分以内のようで、30分が経過すると自動的に消去されていきます。

また今回の実装にはiOSアプリがFirebaseと紐づいており、Analyticsを導入している必要があります。以下の手順までは完了しているとするので、未導入の場合は先に実装しておいてください。

  1. Firebaseプロジェクトの作成
  2. iOSアプリの登録
  3. GoogleService-Info.plistの追加
  4. Firebase Analytics SDKの導入
  5. 初期化コードの組み込み

Firebase Analyticsでロギングする

手順

  1. スキームのArgumentsにキーを追加
  2. イベントをコードから発行
  3. カスタムイベントをコードから発行
  4. DebugViewで確認する

スキームのArgumentsにキーを追加

公式リファレンス:イベントをデバッグする

今回は「DebugView」にリアルタイムで表示させたいのでスキームのArgumentsにキーを追加してデバッグモードに切り替える必要があります。上部のスキームを選択し「Edit Scheme...」をクリックし、「Run」>「Arguments」タブに移動します。その中の「Arguments Passed On Launch」に-FIRAnalyticsDebugEnabledを追加してチェックがついている状態にしておきます。

【Swift/Firebase】ロギングの実装方法!カスタムイベントを発行

これでDebugViewに表示される準備が整いました。アプリをリリースする際などはデバッグモードを戻しておいた方が良いのでロギングが終了したら忘れないうちにチェックを外しておくようにしてください。

※「DebugView」に表示させる必要がない(カスタムイベントのみ実装したい)場合はここは飛ばして「2.イベントをコードから発行」のみ行なってください。

イベントをコードから発行

まずはあらかじめ用意されているイベントから発行してみます。そのためにまずはimport文を追加しておきます。

import FirebaseAnalytics

コードからイベントを手動で発行させるにはAnalyticsクラスのlogEventメソッドを使用します。引数にはイベントの種類(String型)とパラメータ([String:Any])を渡します。

公式リファレンス:logEvent(_:parameters:)

class func logEvent(_ name: String, parameters: [String : Any]?)
Analytics.logEvent(AnalyticsEventSelectContent, parameters: [
  AnalyticsParameterItemID: "アイテムID",
  AnalyticsParameterItemName: "アイテムネーム",
  AnalyticsParameterContentType: "コンテンツタイプ",
])

イベントの種類や辞書型のキー文字列はあらかじめ定義された定数を使用します。ここには自動収集されているイベントなどがあるので任意のタイミングで既存のイベントを流すことも可能になります。他にも様々な定数が定義されているので公式サイト(↓)を参考にしてください。

公式リファレンス:FirebaseAnalytics Framework Reference - Constants

また引数(params)として渡せるのは25個までのようです。

カスタムイベントをコードから発行

先ほどはあらかじめ定数として定義されたイベント名を選択していましたが、自由にイベント名を変更してカスタムイベントを発行することができます。イベント名では大文字と小文字が区別され、_などで繋ぐスネークケース記法(button_click)がおすすめされています。Button Clickなど空白を入れるとうまく動作しないことがあるので注意してください。

カスタムイベントも先ほどのAnalyticsクラスのlogEventメソッドを使用して実装します。引数に渡していたイベント名を以下のように任意の文字列に置き換えればOKです。

Analytics.logEvent("font_button_click", parameters: [
    AnalyticsParameterItemID: "Test",
    AnalyticsParameterItemName: "FontWeight",
    AnalyticsParameterContentType: "Button",
    "custom_key": "Button"
])

また引数として渡せるキー名もカスタムに変更できるようです。

DebugViewで確認する

コードで作成したイベント発行をアプリ内のボタンタップなどに組み込んでおきイベントを発行します。

Button {
    Analytics.logEvent("font_button_click", parameters: [
      AnalyticsParameterItemID: "Test",
      AnalyticsParameterItemName: "FontWeight",
      AnalyticsParameterContentType: "Button"
    ])
} label: {
    Text("FontWeight")
}

ボタンをクリックするとXcodeのコンソールにもイベントが出力されます。

2023-08-30 08:49:52.484281+0900 BigMoji[50891:14658990] 10.14.0 - [FirebaseAnalytics] Event is not subject to real-time event count daily limit. Marking an event as real-time. Event name, parameters: font_button_click, {
    content_type = Button;
    ga_debug (_dbg) = 1;
    ga_event_origin (_o) = app;
    ga_realtime (_r) = 1;
    item_id = Test;
    item_name = FontWeight;
}

そしてFirebaseのDebugViewにも以下のように自動収集しているイベントや追加したカスタムイベントが時間の流れとともに表示されるようになります。引数として渡した情報もイベント名をタップすることで中身を確認することができます。

【Swift/Firebase】ロギングの実装方法!カスタムイベントを発行

左側の「デバッグに使用するデバイス」にロギングされているデバイスが追加されていきます。アプリを一度消して再度ビルドしたりすると別デバイスとして認識されるようなので注意してください。

DebugViewに表示されない問題の解決方法

私はイベントを発行するコードを追加し、アプリを起動させ実行してみましたが、Xcodeのコンソールに表示されるもののいくらまってもDebugViewには表示されませんでした。

結果解決方法はFirebase Analytics SDKのバージョンアップをすることでした。私はCocoa Podsで導入していたのでpod updateコマンドを実行し、以下のようにバージョンアップしたところ正常にDebugViewに表示されるようになりました。

Installing FirebaseAnalytics 10.14.0 (was 10.7.0)
Installing FirebaseCore 10.14.0 (was 10.7.0)
Installing FirebaseCoreInternal 10.14.0 (was 10.7.0)
Installing FirebaseInstallations 10.14.0 (was 10.7.0)
Installing Google-Mobile-Ads-SDK 10.9.0 (was 10.3.0)
Installing GoogleAppMeasurement 10.14.0 (was 10.7.0)
Installing GoogleUserMessagingPlatform 2.1.0 (was 2.0.1)
Installing GoogleUtilities 7.11.5 (was 7.11.0)

イベントのロギングは実機、シミュレーターを問わずに実装できるはずなのでうまく表示されない場合はアプリを一度削除してから再度ビルドしてみると直ることもあります。

Androidのやり方はこちら

GA4/カスタムイベントのカスタムパラメータを確認する探索レポートの作成

発行したカスタムイベントは自動収集されているイベント同様にAnalyticsのイベントから確認することができますが、カスタムパラメータは確認しづらい仕様になっています。GA4の探索レポートを使用することでオリジナルのレポートを作成できるのでそれを使用してカスタムパラメータを確認する探索レポートを作っておくと管理しやすいかもしれません。

【GA4】Google Analyticsの探索レポートでカスタムイベントを表示する方法

作成方法は以下の記事を参考にしてください。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index