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');
  }
}