initPlatformState method
Implementation
Future initPlatformState() async {
try {
await Firebase.initializeApp();
FirebaseMessaging messaging = FirebaseMessaging.instance;
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
const DarwinInitializationSettings initializationSettingsIOS =
DarwinInitializationSettings();
const InitializationSettings initializationSettings =
InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsIOS,
);
await flutterLocalNotificationsPlugin.initialize(
settings: initializationSettings,
);
NotificationSettings settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: true,
provisional: true,
sound: true,
);
String? value = await messaging.getToken();
if (kDebugMode) {
print('FCM Token: $value');
print('User granted permission: ${settings.authorizationStatus}');
}
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
if (kDebugMode) {
print('Got a message whilst in the foreground!');
if (message.notification != null) {
print(
'Message also contained a notification: ${message.notification?.title}',
);
}
}
RemoteNotification? notification = message.notification;
AndroidNotification? android = message.notification?.android;
if (notification != null && android != null) {
flutterLocalNotificationsPlugin.show(
id: notification.hashCode,
title: notification.title,
body: notification.body,
notificationDetails: const NotificationDetails(
android: AndroidNotificationDetails(
'high_importance_channel', // id
'High Importance Notifications', // title
channelDescription:
'This channel is used for important notifications.',
importance: Importance.max,
priority: Priority.high,
icon: '@mipmap/ic_launcher',
),
iOS: DarwinNotificationDetails(
presentAlert: true,
presentBadge: true,
presentSound: true,
),
),
);
}
});
} catch (e) {
if (kDebugMode) {
print(e);
}
}
}