본문 바로가기
개발해보겡/Flutter

Flutter firebase_analytics 사용하기

by 개발자욱 2022. 11. 18.
728x90
반응형

우선 플러터를 파이어베이스에 연동합니다.

연동 방법은 지난 게시글을 확인해주세요.

플러터 안드로이드 파이어베이스 연동하기

 

플러터 안드로이드 파이어베이스 연동하기

플러터를 파이어베이스에 연동하는 법을 알아보겠습니다. flutter firebase 연동하기 사이트 접속 부터 하나씩 다루면서 진행해볼게요 우선 구글 계정으로 파이어베이스 페이지에 접속하여 프로젝

bebestberich.tistory.com

 

그럼 Flutter에서 Firebase를 사용하기 위해 pubspec.yaml에

firebase_core (파이어베이스 기본 패키지)와 firebase_analytics (파이어베이스 애널리틱스 패키지)를 설치합니다.

 

아래 링크에서 버전 확인 후에 버전 설치해주세요

https://pub.dev/packages/firebase_core/install

 

firebase_core | Flutter Package

Flutter plugin for Firebase Core, enabling connecting to multiple Firebase apps.

pub.dev

https://pub.dev/packages/firebase_analytics/install

 

firebase_analytics | Flutter Package

Flutter plugin for Google Analytics for Firebase, an app measurement solution that provides insight on app usage and user engagement on Android and iOS.

pub.dev

모두 완료 했다면 다음 코드를 실행해 봅니다.

import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'dart:async';

void main() async{
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // 파이어베이스 사용
  static FirebaseAnalytics analytics = FirebaseAnalytics.instance; // FirebaseAnalytics();
  // 사용자의 행동 관찰
  static FirebaseAnalyticsObserver observer =
  FirebaseAnalyticsObserver(analytics: analytics);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      navigatorObservers: <NavigatorObserver>[observer],
      home:  FirebaseApp(
          analytics: analytics,
          observer: observer
      ),
    );
  }
}

class FirebaseApp extends StatefulWidget {
  FirebaseApp({Key? key, required this.analytics, required this.observer}) :
        super(key: key);
  final FirebaseAnalytics analytics;
  final FirebaseAnalyticsObserver observer;

  @override
  _FirebaseAppState createState() => _FirebaseAppState(analytics, observer);
}

class _FirebaseAppState extends State<FirebaseApp> {
  _FirebaseAppState(this.analytics, this.observer);

  final FirebaseAnalyticsObserver observer;
  final FirebaseAnalytics analytics;
  String _message = '';

  void setMessage(String message) {
    setState(() {
      _message = message;
    });
  }

  Future<void> _sendAnalyticsEvent() async {
    // 애널리틱스의 logEvent -> Map형태로 보내기
    await analytics.logEvent(name: 'event',parameters: <String, dynamic> {
      'string': 'hello world',
      'int' : 100,
    });
    setMessage('Analytics Test success');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Firebase Example'),
      ),
      body: Center(
        child: Column(
          children: <Widget>[
            ElevatedButton(onPressed: _sendAnalyticsEvent, child: Text('Analytics'),),
            Text(_message, style: const TextStyle(color: Colors.blueAccent),)
          ],
          mainAxisAlignment: MainAxisAlignment.center,
        ),
      ),
      floatingActionButton: FloatingActionButton(child: const Icon(Icons.tab), onPressed: () {},),
    );
  }

}

혹시 다음과 같은 에러가 난다면 참고하세요

GradleException 오류 수정은 아래 문자(클래스)로 대체합니다. 

FileNotFoundException

그리고 버전 오류는 안내와 같이 수정합니다.

minSdkVersion 19

 

Analytics 버튼을 누르고 Analytics Test success 라는 Text가 뜨면 성공입니다.

그리고 파이어베이스 계정에서 확인합니다.

애널리틱스 -> Events 

바로 실시간으로 반영되지 않아서 아직 뜨지 않았으니 나중에 다시 확인해보겠습니다.

반응형