FCM은 비용 없이 안정적으로 메시지 전송이 가능한 플랫폼 간 메시징 솔루션.
(firebase 공식문서)
필요: flutter용 firebase 플러그인 설치 및 초기화
flutter pub add firebase_messaging
flutter pub add firebase_core
flutter pub add flutter_local_notifications
<!--애널리스틱스 수집, FCM 자동 초기화 비활성화-->
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
추가했음.
❗️빌드 시 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된 토큰을 테스트메시지에 추가해주고 테스트를 누르면 해당 기기로 메시지가 전송됨.