Open10

FlutterとFirebaseAnalyticsでイベントログ計測する

kudokudo
class AnalyticsApplicationService {
  static final FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics();
  static final FirebaseAnalyticsObserver observer =
      FirebaseAnalyticsObserver(analytics: firebaseAnalytics);
}

このクラスを拡張する

kudokudo

firebaseAnalytics自体はpublicにする必要がなさそう

kudokudo

class AnalyticsService {
  static final FirebaseAnalytics _firebaseAnalytics = FirebaseAnalytics();
  static final FirebaseAnalyticsObserver observer =
      FirebaseAnalyticsObserver(analytics: _firebaseAnalytics);

  static Future<void> setUserId(int id) async {
    await _firebaseAnalytics.setUserId(id.toString());
  }

  static Future<void> clickOrderListItem(int orderId) async {
    _firebaseAnalytics.logEvent(
        name: AnalyticsEventName.select_content.toString(),
        parameters: {
          AnalyticsEventParameter.content_type.toString():
              AnalyticsEventSelectContentType.order.toString(),
          AnalyticsEventParameter.id.toString(): orderId,
        });
  }
}

enum AnalyticsEventName {
  select_content,
}

enum AnalyticsEventParameter {
  content_type,
  id,
}

enum AnalyticsEventSelectContentType {
  order,
}

kudokudo

firebaseAnalytics().logSelectContentもあるけど、追加ののプロパティを設定するようなIFになっていなかったので生のlogEventを利用した

kudokudo

logSelectContent内ではselect_contentを文字列で設定していたので、constant定義はなさそう。なので自分でenumを定義した

kudokudo

enumのtoString()だとEnum名.要素名として出力されるが、それだと Name must consist of letters, digits or _ (underscores) とエラーメッセージが出力されてNGだった。

https://pub.dev/packages/enum_to_string

ライブラリ使ってEnum名は含めないように修正した