init static method

dynamic init({
  1. required Future onBackgroundMessage(
    1. RemoteMessage message
    ),
  2. required AndroidNotificationChannelWrapperList channels,
  3. String androidDefaultIcon = 'mipmap/ic_launcher',
})

Implementation

static init(
    {required Future Function(RemoteMessage message) onBackgroundMessage,
    required AndroidNotificationChannelWrapperList channels,
    String androidDefaultIcon = 'mipmap/ic_launcher'}) async {
  fcmToken = await FirebaseMessaging.instance.getToken();
  dev.log("$fcmToken", name: "FirebaseMessaging.token");

  AndroidInitializationSettings initializationSettingsAndroid =
      AndroidInitializationSettings(
          androidDefaultIcon); // <- default icon name is @mipmap/ic_launcher
  IOSInitializationSettings initializationSettingsIOS =
      IOSInitializationSettings();
  InitializationSettings initializationSettings = InitializationSettings(
      android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
  await _flutterLocalNotificationsPlugin.initialize(initializationSettings);

  FcmManager.onBackgroundMessage = onBackgroundMessage;

  if (channels.channels == null || channels.channels!.isEmpty) {
    await _flutterLocalNotificationsPlugin
        .resolvePlatformSpecificImplementation<
            AndroidFlutterLocalNotificationsPlugin>()
        ?.createNotificationChannel(AndroidNotificationChannel(
          channels.defaultChannelId, // id
          channels.defaultChannelTitle, // title
          importance: Importance.high,
        ));
  } else {
    await Future.forEach<AndroidNotificationChannelWrapper>(
        channels.channels!, (channel) async {
      await _flutterLocalNotificationsPlugin
          .resolvePlatformSpecificImplementation<
              AndroidFlutterLocalNotificationsPlugin>()
          ?.createNotificationChannel(channel.channel);
    });
  }

  await FirebaseMessaging.instance
      .setForegroundNotificationPresentationOptions(
    alert: true,
    badge: true,
    sound: true,
  );
}