getPermissionStatus method
Gets the current notification permission status.
Returns the permission status without showing a prompt.
Auto-clear behavior: If permission is detected as authorized or
provisional and there is stored denial/settings-prompt info, it will
be automatically cleared. This handles the case where the user enabled
notifications via system settings.
Implementation
Future<NotificationPermissionStatus> getPermissionStatus() async {
try {
final settings = await FirebaseMessaging.instance.getNotificationSettings();
NotificationPermissionStatus status;
switch (settings.authorizationStatus) {
case AuthorizationStatus.authorized:
status = NotificationPermissionStatus.authorized;
case AuthorizationStatus.denied:
status = NotificationPermissionStatus.denied;
case AuthorizationStatus.notDetermined:
status = NotificationPermissionStatus.notDetermined;
case AuthorizationStatus.provisional:
status = NotificationPermissionStatus.provisional;
}
// Auto-clear denial/settings info if permission was granted via settings
if (status == NotificationPermissionStatus.authorized ||
status == NotificationPermissionStatus.provisional) {
await _permissionHelper.autoClearIfGranted();
}
return status;
} catch (e, stackTrace) {
loge(e, 'Error getting permission status', stackTrace);
_onError?.call('Error getting permission status: $e', stackTrace);
// Return denied as safe default - don't assume we have permission
return NotificationPermissionStatus.denied;
}
}