initializeFCM static method

Future<void> initializeFCM()

Initialize FCM and get token with proper APNS handling

Implementation

static Future<void> initializeFCM() async {
  try {
    // Request notification permissions first
    NotificationSettings settings = await _firebaseMessaging.requestPermission(
      alert: true,
      announcement: false,
      badge: true,
      carPlay: false,
      criticalAlert: false,
      provisional: false,
      sound: true,
    );

    if (settings.authorizationStatus == AuthorizationStatus.authorized) {
      if (kDebugMode) {
        print('User granted permission');
      }

      // Get and update FCM token
      await _getFCMTokenSafely();

      // Listen for token refresh
      _firebaseMessaging.onTokenRefresh.listen((token) {
        updateFcmToken(token);
      });
    } else {
      if (kDebugMode) {
        print('User declined or has not accepted permission');
      }
    }
  } catch (e) {
    if (kDebugMode) {
      print("Error initializing FCM: $e");
    }
  }
}