reinitializeNotificationChannels function
Future<void>
reinitializeNotificationChannels()
Implementation
Future<void> reinitializeNotificationChannels() async {
debugPrint('Initialisiere alle Benachrichtigungskanäle...');
try {
// Zuerst alle vorhandenen Kanäle entfernen
await AwesomeNotifications()
.cancelAll(); // Alle aktiven Benachrichtigungen löschen
// Standard-Kanäle direkt entfernen
try {
await AwesomeNotifications().removeChannel('progress');
await AwesomeNotifications().removeChannel('backup_progress');
await AwesomeNotifications().removeChannel('sync_complete');
debugPrint('Standard-Kanäle entfernt');
} catch (e) {
debugPrint('Fehler beim Entfernen der Standard-Kanäle: $e');
}
// Warte kurz, um sicherzustellen, dass die Kanäle wirklich entfernt wurden
await Future.delayed(const Duration(milliseconds: 500));
// WICHTIG: Alle Kanäle in einen einzigen Hauptkanal konsolidieren
// Dies kann auf manchen Android-Geräten die Aktivierung erleichtern
await AwesomeNotifications().initialize(
'resource://drawable/ic_icon',
[
NotificationChannel(
channelKey:
'mbg_all_notifications', // Ein Hauptkanal für alle Benachrichtigungen
channelName: 'MBG App Benachrichtigungen',
channelDescription: 'Alle Benachrichtigungen der MBG App',
defaultColor: Colors.blue,
importance:
NotificationImportance.Max, // Maximale Priorität für Sichtbarkeit
playSound: true, // Sound einschalten für bessere Erkennung
enableVibration: true, // Vibration für bessere Erkennung
ledColor: Colors.blue,
// Keine Gruppierung mehr, da dies auf manchen Geräten Probleme verursachen kann
),
],
);
// Eine kurze Verzögerung
await Future.delayed(const Duration(milliseconds: 500));
// Eine aktive Benachrichtigung senden und NICHT sofort löschen
// Dies ist wichtig, damit der Benutzer sie sehen und mit ihr interagieren kann
await AwesomeNotifications().createNotification(
content: NotificationContent(
id: 1000,
channelKey: 'mbg_all_notifications',
title: 'Benachrichtigungen aktiviert',
body:
'Die App kann jetzt Benachrichtigungen anzeigen. Tippe hier, um Einstellungen zu öffnen.',
notificationLayout: NotificationLayout.Default,
payload: {'open_settings': 'true'},
),
actionButtons: [
NotificationActionButton(
key: 'OPEN_SETTINGS',
label: 'Einstellungen öffnen',
enabled: true,
),
],
);
debugPrint('Benachrichtigungskanal erfolgreich initialisiert');
} catch (e) {
debugPrint(
'Fehler bei der Initialisierung des Benachrichtigungskanals: $e');
}
}