


firebase_core: ^3.12.1
firebase_messaging: ^15.2.4
flutter_local_notifications: ^19.0.0

plugin에 해당 내용추가
id 'com.google.gms.google-services' // Firebase 설정
compileOptions에 세번째 줄 추가
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
coreLibraryDesugaringEnabled true // ✅ Java 8+ 기능 지원 활성화
}
dependencies 자체를 추가해주자 (포어그라운드에서 되려면)
dependencies {
implementation "androidx.core:core-ktx:1.10.1"
// ✅ coreLibraryDesugaring 추가 (필수)
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
}
해당 코드 추가
classpath 'com.google.gms:google-services:4.4.0'

import 'package:firebase_messaging/firebase_messaging.dart';
class FirebaseApi {
//create an instance of Firebase Msg
final _firebaseMessaging = FirebaseMessaging.instance;
//function to init notification
Future<void> initNotifications() async {
//request permission from user (will prompt user)
await _firebaseMessaging.requestPermission(
badge: true,
alert: true,
sound: true
);
//fetch the FCM token for this device
final FCMToken = await _firebaseMessaging.getToken();
//print the token (normally you would send this to your server)
print('Token: $FCMToken');
}
}
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class FirebaseApi {
// Firebase Messaging 인스턴스 생성
final _firebaseMessaging = FirebaseMessaging.instance;
// Flutter Local Notifications 인스턴스 생성
final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
// 알림 초기화
Future<void> initNotifications() async {
// 사용자에게 알림 권한 요청
await _firebaseMessaging.requestPermission(
badge: true,
alert: true,
sound: true,
);
// FCM 토큰 가져오기 (서버로 보내야 함)
final fcmToken = await _firebaseMessaging.getToken();
print('📌 FCM Token: $fcmToken');
// 로컬 알림 설정
const AndroidInitializationSettings androidInitializationSettings =
AndroidInitializationSettings('@mipmap/ic_launcher');
final InitializationSettings initializationSettings =
InitializationSettings(android: androidInitializationSettings);
await _flutterLocalNotificationsPlugin.initialize(initializationSettings);
// 포그라운드에서 FCM 알림 처리
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print("📩 포그라운드 알림 수신: ${message.notification?.title} - ${message.notification?.body}");
_showNotification(message);
});
}
// 푸시 알림 표시 함수
void _showNotification(RemoteMessage message) async {
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails(
'high_importance_channel', // 채널 ID
'High Importance Notifications', // 채널 이름
channelDescription: 'This channel is used for important notifications.',
importance: Importance.max,
priority: Priority.high,
);
const NotificationDetails platformChannelSpecifics =
NotificationDetails(android: androidPlatformChannelSpecifics);
await _flutterLocalNotificationsPlugin.show(
0, // 알림 ID
message.notification?.title, // 알림 제목
message.notification?.body, // 알림 내용
platformChannelSpecifics,
);
}
}
main.dart에서는 해당 두개코드로 fcm을 초기화 하는 코드만 있으면됨
await Firebase.initializeApp();
await FirebaseApi().initNotifications();

코드추가
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="USE_FULL_SCREEN_INTENT"/>

코드추가
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="high_importance_channel" />

fcm이 초기화 될때 print에서 나오는 token값을 복사해놓고

firebase에 있는 messaging을 선택

캠페인 만들기

firebase 알림메시지 선택

알림내용 작성후

아까 복사해뒀던 토큰값을 넣어주고 테스트


