🦉

[初心者ok] Flutter Google Analytics 攻略

2024/08/06に公開2

Flutterで開発をしていて個人アプリでユーザの行動分析を行う場合や、マーケターからの要求でFirebase Analytics(Google Analytics) を使用するケースは多いのではないでしょうか。
本日は、その分析方法について記事を書きます。

こんな人におすすめ

・個人アプリで情報収集してマーケティングを行いたい
・マーケ側からの要求で適切に情報を収集したい
・Firebase Analyticsの使い方を知りたい

⭐️ 適切な方法で情報を収集し、Firebaseで分析できるようになります

最初に

まず、一度も使用したことがない場合はこちらをご覧ください。
https://youtu.be/8iZpH7O6zXo

自動的に収集されるイベントを把握しよう

Firebaseで、アナリティクスの使用を開始するとデフォルトで収集されるものと、
自分で収集するものに分けられます。
そのため、まず自動でどんなものが収集されるかみていきましょう!

https://support.google.com/analytics/answer/9234069?hl=ja

以下のような情報が自動収集されている

  • first_open : ユーザーがアプリをインストールまたは再インストールした後に、初めて起動したときに発生するイベント

  • in_app_purchase : iTunesのApp StoreまたはGoogle Playで処理されるアプリ内購入をユーザーが完了したときに発生するイベント

  • notification_open : Firebase Cloud Messagingから送信された通知をユーザーが開いたときに発生するイベント

  • screen_view : スクリーンが移動したときに発生するイベント(条件あり)

💡 個人的にfirst_openでアプリがインストールされたことが確認できるので気に入っています。

アプリで推奨されるイベントを知ろう

こちらは、すべてのアプリで推奨されるイベント項目です。
とくに、課金系のアプリをだしている場合は、商品かごに入るタイミング。戻されるタイミングで
情報を追跡しA/Bテストなども交えながら、購入率をあげていきたいといった要望がでそうですよね!

ゲームやオンライン販売の推奨イベントもあるので以下をご参照ください。

https://support.google.com/analytics/answer/9267735?hl=ja&visit_id=638525593973687217-4167530302&rd=2

⭐️ なんのログを取得したらいいんだって方の大きな味方になります

実装

それでは実装のほうに入っていきたいと思います。
その前に、今回紹介するよく使うメソット の全体像を抑えましょう!

💡よく使う メソット

だいたいプロジェクトでは以下のメソットをよく使ってます!

logEvent

ログ名を設定して イベント収集

setUserId

useridを取得して、特定のユーザに関連つけられたイベントの収集

setUserProperty

ユーザーの特定の属性を設定

setAnalyticsCollectionEnabled

アナリティクスデータの収集を有効または無効化

resetAnalyticsData

ユーザーデータをリセットします。これにより、ユーザーIDとすべてのユーザープロパティがクリアされる

logAppOpen

アプリが開かれたときにイベントを記録します。これはアプリの使用頻度を追跡する。

手順

それでは、実際にコードを書いていきます。
※ riverpodを使う前提で書いています。

直接インスタンス化する場合は以下です。

final FirebaseAnalytics analytics = FirebaseAnalytics.instance;

1. Firebase Analiticsの Providerを定義しよう。

import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'analytics_provider.g.dart';

@riverpod
FirebaseAnalytics firebaseAnalytics(FirebaseAnalyticsRef ref) {
  return FirebaseAnalytics.instance;
}

2. DIする

final analitics = ref.read(firebaseAnalyticsProvider);

3. 活用事例

/// [logEvent]
/// 購入イベントで、ユーザが何を買ったか収集
analytics.logEvent(
  name: 'purchase',
  parameters: {
    'item_id': '12345',
    'item_name': 'widget',
    'value': 15.99
  }
);

/// [setUserId]
/// firebase authなどからuserIdを取得して設定
analitics.setUserId(id: "user0123");

/// [setUserProperty]
/// ユーザープロパティを設定
/// 事前に質問しておき、その結果を取得して設定する
/// 例)都道府県でTokyoの人を対象に情報収集するときなど
analitics.setUserProperty(
    name: 'prefecture', value: 'tokyo');

/// [setAnalyticsCollectionEnabled]
収集の on offを切り替える
analitics.setAnalyticsCollectionEnabled(true);

/// [resetAnalyticsData]
/// ユーザーデータをリセット
/// ユーザーIDとすべてのユーザープロパティがクリア
analitics.resetAnalyticsData();

最後に

いかがだったでしょう。
あとは、Firebaseのコンソールで実際に確認ながらデータ収集をすると理解できると思います。
上記のほかに、Firebaseが推奨するイベントを追加した場合などは、適宜追加してください⭐️

次回は、 module化した router でのアナリティクスを挟む方法を紹介します。

一般的なこういうやり方とは異なるでぜひ期待してください!

return MaterialApp(
    home: HomePage(),
    navigatorObservers: [analyticsObserver],
    );
}

Discussion

saiki01saiki01

いい記事でした。ありがとうございます😀