initialize method

Future<void> initialize(
  1. FirebaseMessaging messaging,
  2. void messagingCallback()?
)

Implementation

Future<void> initialize(FirebaseMessaging messaging, void Function()? messagingCallback) async {
  callback = messagingCallback;
  final user = await getUser();

  // Request permission for push notifications
  NotificationSettings settings = await messaging.requestPermission(
    alert: true,
    announcement: false,
    badge: true,
    carPlay: false,
    criticalAlert: false,
    provisional: true,
    sound: true,
  );

  final pushGranted = settings.authorizationStatus;
  String? token = await messaging.getToken();

  switch (pushGranted) {
    case AuthorizationStatus.provisional:
    case AuthorizationStatus.authorized:
      // Granted case for push notifications
      await pushSubscriptionEvent(token!, user['userId']);
      break;
    case AuthorizationStatus.denied:
      //TODO : Handle denied case
      break;
    default:
      break;
  }

  await _localNotificationInitializer();

  // Uygulama açıkken bildirim geldiğinde yapılacak işlemler
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    _onMessage(message);
  });

  FirebaseMessaging.onBackgroundMessage(_backgroundMessageHandler);

  return Future.value();
}