APNS NULL

this is our code foe fetching the apnstoken - and registering for the FCM and snding it to our servers. - we are consistently getting apns == null

import 'dart:io'; import 'package:firebase_messaging/firebase_messaging.dart';

import 'package:firebase_auth/firebase_auth.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:solaris/services/fetch_deviceId.dart';

Future<void> initializeFCM() async { final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;

// Request notification permissions for iOS final settings = await _firebaseMessaging.requestPermission(); print('Notifcation Permission Status: ${settings.authorizationStatus}');

String? apnsToken; int retries = 0; const int maxRetries = 60; const Duration retryDelay = Duration(seconds: 2);

// Retry fetching the APNs token until it's available or max retries are reached while (apnsToken == null && retries < maxRetries) { print(retries);

apnsToken = await _firebaseMessaging.getAPNSToken();
if (apnsToken == null) {
  await Future.delayed(retryDelay);
  retries++;
}

}

if (apnsToken != null) { // APNs token is available, proceed to get FCM token String? fcmToken = await _firebaseMessaging.getToken(); if (fcmToken != null) { // Register the device and token with your backend await registerDeviceAndToken(fcmToken); } else { // Handle the case where FCM token is still null print('FCM token is null.'); } } else { // Handle the case where APNs token is not available after retries print('APNs token not available after retries.'); } }

Future<void> registerDeviceAndToken(String fcmToken) async { //fcmToken = fcmToken; print(fcmToken); final user = FirebaseAuth.instance.currentUser;

if (user == null) { print('❌ User not logged in'); return; }

final deviceId = await DeviceInfoService.getUniqueDeviceId(); //final fcmToken = await FirebaseMessaging.instance.getToken();

print('📱 Device ID from register_fcm: $deviceId'); print('📩 FCM Token from mew getapnd function: $fcmToken');

if (deviceId == null || fcmToken == null) { print('❌ Failed to get deviceId or fcmToken'); return; }

final docRef = FirebaseFirestore.instance .collection('master_users') .doc(user.uid) .collection('deviceId') .doc(user.uid); // This document holds a map: { deviceId: fcmToken }

  print(docRef);

try { // Get current data, fallback to empty map final snapshot = await docRef.get(); final data = snapshot.data() ?? <String, dynamic>{}; print(data);

// Update or add current deviceId key
data[deviceId] = fcmToken;

// Save updated map back to Firestore
await docRef.set(data);
print(data);

print('✅ Device ID and FCM token updated/stored under correct structure');

} catch (e) { print('❌ Firestore write error: $e'); } }

APNS NULL
 
 
Q