ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Firebase 연동(Android)
    Mobile/Flutter 2022. 4. 19. 20:36

    Firebase를 Flutter에 연동하기 위해서는 Firebase 프로젝트를 생성해야 한다.

    https://console.firebase.google.com/?hl=ko 

     

    로그인 - Google 계정

    하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

    accounts.google.com

     

    위 FirebaseConsole로 접속하여 프로젝트 추가 버튼을 눌러준다.

    프로젝트 명은 원하는 이름으로 설정한다.

     

    애널리스틱이 필요하다면 설정을 하면 된다.

     

    설정이 완료되면 Firebase를 사용할 수 있다.

     

    이제 Flutter와 연동해보자.

     

    톱니바퀴 버튼을 클릭하여 프로젝트 설정을 누른다.

     

    들어가게 되면 위와 같은 화면이 나타난다.

     

    해당 화면에서 제일 아래로 내리게 되면 위 이미지처럼 플랫폼을 추가할 수 있다.

     

    여기서 안드로이드를 클릭해 준다.

     

    클릭하면 위처럼 나타나는 데 여기에 만드는 앱의 패키지 명을 작성한다.

     

    선택사항은 작성하지 않아도 괜찮다.

     

    다음을 누르게 되면 구성 파일을 다운로드 가능한데 파일을 다운로드하여 ~/android/app 폴더에 넣어준다.

     

    이제 build.gradle을 설정하면 된다.

    처음은 ~/android에 있는 build.gradle을 설정해 준다.

     

    buildscript {
      repositories {
        // Check that you have the following line (if not, add it):
        google()  // Google's Maven repository
    
      }
      dependencies {
        ...
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    
      }
    }
    
    allprojects {
      ...
      repositories {
        // Check that you have the following line (if not, add it):
        google()  // Google's Maven repository
    
        ...
      }
    }

    위처럼 classpath 'com.google.gms:google-services:4.3.10' 부분만 추가해 주면 된다.

     

    다음은 ~/android/app 에 있는 build.gradle을 설정한다.

     

    Flutter에 작성되어있는 apply 내용 아래에

    apply plugin: 'com.google.gms.google-services'

    를 추가해 준다.

    또한 최 하단에 있는 dependencies에 

    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        implementation platform('com.google.firebase:firebase-bom:29.2.1')
        implementation 'com.google.firebase:firebase-analytics-ktx'
        implementation 'com.google.firebase:firebase-firestore-ktx'
        implementation 'com.google.firebase:firebase-core:20.1.2'
        implementation 'com.google.firebase:firebase-messaging:23.0.3'
    }

    위 코드를 추가해 준다.

     

    위 내용에서 analytics는 애널리스틱을 사용할 때 추가하는 항목이다.

     

    이렇게 설정하면 안드로이드는 기본 설정이 완료되었다.

     

    이제 Flutter 설정을 해보자

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      runApp(const MyApp());
    }

    Firebase를 초기화해주는 코드를 작성해 준다.

     

    Future<void> tokenInit() async {
      await FirebaseMessaging.instance.getToken().then((tokenData) {
        setState(() {
          token = tokenData!;
        });
      });
    }

     

    기기에 대한 토큰 값을 생성해 주는 코드를 작성한다.

     

    전체 코드는 아래와 같다.

     

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: const MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      const MyHomePage({Key? key}) : super(key: key);
    
      @override
      State<MyHomePage> createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      late String token = '';
    
      @override
      void initState() {
        super.initState();
        tokenInit();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
              title: const Text("Firebase Test"),
            ),
            body: Center(
                child: Column(
              children: <Widget>[
                Text("토큰 값 : $token"),
              ],
            )));
      }
    
      Future<void> tokenInit() async {
        await FirebaseMessaging.instance.getToken().then((tokenData) {
          setState(() {
            token = tokenData!;
          });
        });
      }
    }

     

    토큰이 생성된 것을 확인하였다면 토큰을 이용하여 푸시 메시지를 보내보자.

     

    메시지를 보내면 

    위와 같이 메시지를 받았다고 콘솔 창에 나타난다.

     

    푸시 메시지가 안 나타나는 이유는 푸시 메시지를 위한 설정을 아직 하지 않았기 때문이다.

     

    댓글

Designed by Tistory.