Advanced

Lokale Benachrichtigungen

Einleitung

Nylo Website bietet ein lokales Benachrichtigungssystem über die Klasse LocalNotification. Dies ermöglicht es Ihnen, sofortige oder geplante Benachrichtigungen mit reichhaltigen Inhalten auf iOS und Android zu senden.

Lokale Benachrichtigungen werden im Web nicht unterstützt. Der Versuch, sie im Web zu verwenden, löst eine NotificationException aus.

Grundlegende Verwendung

Senden Sie eine Benachrichtigung mit dem Builder-Pattern oder der statischen Methode:

import 'package:nylo_framework/nylo_framework.dart';

// Builder pattern
await LocalNotification(title: "Hello", body: "World").send();

// Using the helper function
await localNotification("Hello", "World").send();

// Using the static method
await LocalNotification.sendNotification(
  title: "Hello",
  body: "World",
);

Geplante Benachrichtigungen

Planen Sie eine Benachrichtigung zur Zustellung zu einem bestimmten Zeitpunkt:

// Schedule for tomorrow
final tomorrow = DateTime.now().add(Duration(days: 1));

await LocalNotification(
  title: "Reminder",
  body: "Don't forget your appointment!",
).send(at: tomorrow);

// Using the static method
await LocalNotification.sendNotification(
  title: "Reminder",
  body: "Don't forget your appointment!",
  at: tomorrow,
);

Builder-Pattern

Die Klasse LocalNotification bietet eine fluent Builder-API. Alle verkettbaren Methoden geben die LocalNotification-Instanz zurück:

await LocalNotification(title: "New Photo", body: "Check this out!")
    .addPayload("photo_id:123")
    .addId(42)
    .addSubtitle("From your friend")
    .addBadgeNumber(3)
    .addSound("custom_sound.wav")
    .send();

Verkettbare Methoden

Methode Parameter Beschreibung
addPayload String payload Setzt einen benutzerdefinierten Daten-String für die Benachrichtigung
addId int id Setzt einen eindeutigen Bezeichner für die Benachrichtigung
addSubtitle String subtitle Setzt den Untertiteltext
addBadgeNumber int badgeNumber Setzt die App-Icon-Badge-Nummer
addSound String sound Setzt einen benutzerdefinierten Sound-Dateinamen
addAttachment String url, String fileName, {bool? showThumbnail} Fügt einen Anhang hinzu (nur iOS, Download von URL)
setAndroidConfig AndroidNotificationConfig config Setzt Android-spezifische Konfiguration
setIOSConfig IOSNotificationConfig config Setzt iOS-spezifische Konfiguration

send()

Future<void> send({
  DateTime? at,
  AndroidScheduleMode? androidScheduleMode,
})

Wenn at angegeben wird, wird die Benachrichtigung für diesen Zeitpunkt geplant. Andernfalls wird sie sofort angezeigt.

Plattformkonfiguration

In v7 werden plattformspezifische Optionen über AndroidNotificationConfig- und IOSNotificationConfig-Objekte konfiguriert.

Android-Konfiguration

Übergeben Sie eine AndroidNotificationConfig an setAndroidConfig():

await LocalNotification(
  title: "Android Notification",
  body: "With custom configuration",
)
.setAndroidConfig(AndroidNotificationConfig(
  channelId: "custom_channel",
  channelName: "Custom Channel",
  channelDescription: "Notifications from custom channel",
  importance: Importance.max,
  priority: Priority.high,
  enableVibration: true,
  vibrationPattern: [0, 1000, 500, 1000],
  enableLights: true,
  ledColor: Color(0xFF00FF00),
))
.send();

AndroidNotificationConfig-Eigenschaften

Eigenschaft Typ Standard Beschreibung
channelId String? 'default_channel' Benachrichtigungskanal-ID
channelName String? 'Default Channel' Benachrichtigungskanal-Name
channelDescription String? 'Default Channel' Kanalbeschreibung
importance Importance? Importance.max Wichtigkeitsstufe der Benachrichtigung
priority Priority? Priority.high Priorität der Benachrichtigung
ticker String? 'ticker' Ticker-Text für Barrierefreiheit
icon String? 'app_icon' Kleines Icon-Ressourcenname
playSound bool? true Ob ein Sound abgespielt werden soll
enableVibration bool? true Ob Vibration aktiviert werden soll
vibrationPattern List<int>? - Benutzerdefiniertes Vibrationsmuster (ms)
groupKey String? - Gruppenschlüssel für Benachrichtigungsgruppierung
setAsGroupSummary bool? false Ob dies die Gruppenzusammenfassung ist
groupAlertBehavior GroupAlertBehavior? GroupAlertBehavior.all Alarmverhalten für Gruppen
autoCancel bool? true Automatisches Verwerfen beim Antippen
ongoing bool? false Kann vom Benutzer nicht verworfen werden
silent bool? false Stille Benachrichtigung
color Color? - Akzentfarbe
largeIcon String? - Großes Icon-Ressourcenpfad
onlyAlertOnce bool? false Nur beim ersten Anzeigen alarmieren
showWhen bool? true Zeitstempel anzeigen
when int? - Benutzerdefinierter Zeitstempel (ms seit Epoch)
usesChronometer bool? false Chronometer-Anzeige verwenden
chronometerCountDown bool? false Chronometer zählt herunter
channelShowBadge bool? true Badge auf Kanal anzeigen
showProgress bool? false Fortschrittsanzeige anzeigen
maxProgress int? 0 Maximaler Fortschrittswert
progress int? 0 Aktueller Fortschrittswert
indeterminate bool? false Unbestimmter Fortschritt
channelAction AndroidNotificationChannelAction? createIfNotExists Kanalaktion
enableLights bool? false Benachrichtigungs-LED aktivieren
ledColor Color? - LED-Farbe
ledOnMs int? - LED-Ein-Dauer (ms)
ledOffMs int? - LED-Aus-Dauer (ms)
visibility NotificationVisibility? - Sperrbildschirm-Sichtbarkeit
timeoutAfter int? - Automatisches Verwerfen-Timeout (ms)
fullScreenIntent bool? false Als Vollbildabsicht starten
shortcutId String? - Verknüpfungs-ID
additionalFlags List<int>? - Zusätzliche Flags
tag String? - Benachrichtigungs-Tag
actions List<AndroidNotificationAction>? - Aktionsschaltflächen
colorized bool? false Kolorierung aktivieren
audioAttributesUsage AudioAttributesUsage? notification Audio-Attribute-Verwendung

iOS-Konfiguration

Übergeben Sie eine IOSNotificationConfig an setIOSConfig():

await LocalNotification(
  title: "iOS Notification",
  body: "With custom configuration",
)
.setIOSConfig(IOSNotificationConfig(
  presentAlert: true,
  presentBanner: true,
  presentSound: true,
  threadIdentifier: "thread_1",
  interruptionLevel: InterruptionLevel.active,
))
.addBadgeNumber(1)
.addSound("custom_sound.wav")
.send();

IOSNotificationConfig-Eigenschaften

Eigenschaft Typ Standard Beschreibung
presentList bool? true In Benachrichtigungsliste anzeigen
presentAlert bool? true Alarm anzeigen
presentBadge bool? true App-Badge aktualisieren
presentSound bool? true Sound abspielen
presentBanner bool? true Banner anzeigen
sound String? - Sound-Dateiname
badgeNumber int? - Badge-Nummer
threadIdentifier String? - Thread-Bezeichner für Gruppierung
categoryIdentifier String? - Kategorie-Bezeichner für Aktionen
interruptionLevel InterruptionLevel? - Unterbrechungsstufe

Anhänge (nur iOS)

Fügen Sie Bild-, Audio- oder Videoanhänge zu iOS-Benachrichtigungen hinzu. Anhänge werden von einer URL heruntergeladen:

await LocalNotification(
  title: "New Photo",
  body: "Check out this image!",
)
.addAttachment(
  "https://example.com/image.jpg",
  "photo.jpg",
  showThumbnail: true,
)
.send();

Benachrichtigungen verwalten

Eine bestimmte Benachrichtigung abbrechen

await LocalNotification.cancelNotification(42);

// With a tag (Android)
await LocalNotification.cancelNotification(42, tag: "my_tag");

Alle Benachrichtigungen abbrechen

await LocalNotification.cancelAllNotifications();

Badge-Zähler zurücksetzen

await LocalNotification.clearBadgeCount();

Berechtigungen

Fordern Sie Benachrichtigungsberechtigungen vom Benutzer an:

// Request with defaults
await LocalNotification.requestPermissions();

// Request with specific options
await LocalNotification.requestPermissions(
  alert: true,
  badge: true,
  sound: true,
  provisional: false,
  critical: false,
  vibrate: true,
  enableLights: true,
  channelId: 'default_notification_channel_id',
  channelName: 'Default Notification Channel',
);

Berechtigungen werden beim ersten Senden einer Benachrichtigung automatisch über NyScheduler.taskOnce angefordert.

Plattform-Setup

iOS-Setup

Fügen Sie zu Ihrer Info.plist hinzu:

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

Android-Setup

Fügen Sie zu Ihrer AndroidManifest.xml hinzu:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />

API-Referenz

Statische Methoden

Methode Signatur Beschreibung
sendNotification static Future<void> sendNotification({required String title, required String body, String? payload, DateTime? at, int? id, String? subtitle, int? badgeNumber, String? sound, AndroidNotificationConfig? androidConfig, IOSNotificationConfig? iosConfig, AndroidScheduleMode? androidScheduleMode}) Benachrichtigung mit allen Optionen senden
cancelNotification static Future<void> cancelNotification(int id, {String? tag}) Eine bestimmte Benachrichtigung abbrechen
cancelAllNotifications static Future<void> cancelAllNotifications() Alle Benachrichtigungen abbrechen
requestPermissions static Future<void> requestPermissions({...}) Benachrichtigungsberechtigungen anfordern
clearBadgeCount static Future<void> clearBadgeCount() iOS-Badge-Zähler zurücksetzen

Instanzmethoden (verkettbar)

Methode Parameter Rückgabewert Beschreibung
addPayload String payload LocalNotification Payload-Daten setzen
addId int id LocalNotification Benachrichtigungs-ID setzen
addSubtitle String subtitle LocalNotification Untertitel setzen
addBadgeNumber int badgeNumber LocalNotification Badge-Nummer setzen
addSound String sound LocalNotification Benutzerdefinierten Sound setzen
addAttachment String url, String fileName, {bool? showThumbnail} LocalNotification Anhang hinzufügen (iOS)
setAndroidConfig AndroidNotificationConfig config LocalNotification Android-Konfiguration setzen
setIOSConfig IOSNotificationConfig config LocalNotification iOS-Konfiguration setzen
send {DateTime? at, AndroidScheduleMode? androidScheduleMode} Future<void> Benachrichtigung senden