initialize method
Initialize FCM: request permission, get token, save it, listen for refresh.
Implementation
Future<void> initialize() async {
// Request iOS notification permission
final settings = await _messaging.requestPermission(
alert: true,
badge: true,
sound: true,
);
if (settings.authorizationStatus == AuthorizationStatus.denied) {
dev.log('Push notification permission denied', name: 'FcmService');
return;
}
// Get APNs token first (iOS requirement for FCM)
final apnsToken = await _messaging.getAPNSToken();
if (apnsToken == null) {
dev.log('APNs token not available yet', name: 'FcmService');
// On simulator or if APNs is not ready, skip FCM registration
return;
}
// Get FCM token and save
final token = await _messaging.getToken();
if (token != null) {
await _saveToken(token);
}
// Listen for token refresh
_messaging.onTokenRefresh.listen(_saveToken);
}