[Flutter] FCM(안드만)

JH Cho·2023년 1월 26일
0

Flutter

목록 보기
8/8

FirebaseCloudMessaging(FCM)

FCM은 비용 없이 안정적으로 메시지 전송이 가능한 플랫폼 간 메시징 솔루션.
(firebase 공식문서)

  • FCM은 새 이메일 또는 기타 데이터를 동기화할 수 있음을 클라이언트 앱에 알릴 수 있음.
  • 알림 메시지를 보내서 사용자 재참여 및 유지를 유도 가능
  • 메시지는 최대 4,000바이트의 페이로드를 클라이언트 앱으로 전송 가능

FCM plugin 설치

필요: flutter용 firebase 플러그인 설치 및 초기화

  1. flutter pub add firebase_messaging
  2. flutter pub add firebase_core
  3. flutter pub add flutter_local_notifications
  4. /android/app/src/main/AndroidManifest.xml
            <!--애널리스틱스 수집, FCM 자동 초기화 비활성화-->
        <meta-data
            android:name="firebase_messaging_auto_init_enabled"
            android:value="false" />
        <meta-data
           android:name="firebase_analytics_collection_enabled"
           android:value="false" />

추가했음.

  1. 빌드

    ❗️빌드 시 sdk version 오류가 떴음.
    하라는 대로 app/build.gradle 찾아가서
    버전 바꿔주고 다시 빌드하니 에러 해결됨.

테스트 알림 메시지 보내기

일단 아래와 같은 함수 파일을 하나 만들어 줬음.

import 'package:firebase_messaging/firebase_messaging.dart';
import 'dart:io';

Future<String?> getFcmToken() async {
  if (Platform.isIOS) {
    String? fcmKey = await FirebaseMessaging.instance.getToken();
    return fcmKey;
  }
  String? fcmKey = await FirebaseMessaging.instance.getToken();
  return fcmKey;
}

Home_screen을 StatefulWidget으로 변환했고 위 함수를 import
async 함수를 만들고 내부에서 getFcmToken함수를 호출 후 토큰 리턴 -> initState에 넣어줌.

  void getToken() async {
    String? fcmkey = await getFcmToken();
    print(fcmkey); //fcmkey를 test에 추가해주고 쏘면 됨.
  }

  @override
  void initState() {
    super.initState();
    getToken();
  }

print된 토큰을 테스트메시지에 추가해주고 테스트를 누르면 해당 기기로 메시지가 전송됨.

참고 영상-background

foreground 영상

profile
주먹구구식은 버리고 Why & How를 고민하며 프로그래밍 하는 개발자가 되자!

0개의 댓글