Advanced

Yerel Bildirimler

Giriş

Nylo Website, LocalNotification sınıfı aracılığıyla yerel bir bildirim sistemi sunar. Bu, iOS ve Android üzerinde zengin içerikli anlık veya zamanlanmış bildirimler göndermenize olanak tanır.

Yerel bildirimler web'de desteklenmez. Web'de kullanmaya çalışmak bir NotificationException fırlatır.

Temel Kullanım

Builder deseni veya statik metodu kullanarak bir bildirim gönderin:

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",
);

Zamanlanmış Bildirimler

Belirli bir zamanda teslim edilecek bir bildirim zamanlayın:

// 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 Deseni

LocalNotification sınıfı akıcı bir builder API sunar. Tüm zincirleme metotlar LocalNotification örneğini döndürür:

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();

Zincirleme Metotlar

Metot Parametreler Açıklama
addPayload String payload Bildirim için özel veri dizesi ayarlar
addId int id Bildirim için benzersiz bir tanımlayıcı ayarlar
addSubtitle String subtitle Alt başlık metnini ayarlar
addBadgeNumber int badgeNumber Uygulama simgesi rozet numarasını ayarlar
addSound String sound Özel bir ses dosyası adı ayarlar
addAttachment String url, String fileName, {bool? showThumbnail} Ek ekler (yalnızca iOS, URL'den indirir)
setAndroidConfig AndroidNotificationConfig config Android'e özgü yapılandırmayı ayarlar
setIOSConfig IOSNotificationConfig config iOS'a özgü yapılandırmayı ayarlar

send()

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

at sağlanırsa, bildirimi o zaman için zamanlar. Aksi takdirde hemen gösterir.

Platform Yapılandırması

Platforma özgü seçenekler AndroidNotificationConfig ve IOSNotificationConfig nesneleri aracılığıyla yapılandırılır.

Android Yapılandırması

setAndroidConfig() metoduna bir AndroidNotificationConfig geçirin:

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 Özellikleri

Özellik Tür Varsayılan Açıklama
channelId String? 'default_channel' Bildirim kanalı ID'si
channelName String? 'Default Channel' Bildirim kanalı adı
channelDescription String? 'Default Channel' Kanal açıklaması
importance Importance? Importance.max Bildirim önem seviyesi
priority Priority? Priority.high Bildirim önceliği
ticker String? 'ticker' Erişilebilirlik için ticker metni
icon String? 'app_icon' Küçük simge kaynak adı
playSound bool? true Ses çalınıp çalınmayacağı
enableVibration bool? true Titreşimin etkinleştirilip etkinleştirilmeyeceği
vibrationPattern List<int>? - Özel titreşim deseni (ms)
groupKey String? - Bildirim gruplama için grup anahtarı
setAsGroupSummary bool? false Bunun grup özeti olup olmadığı
groupAlertBehavior GroupAlertBehavior? GroupAlertBehavior.all Gruplar için uyarı davranışı
autoCancel bool? true Dokunulduğunda otomatik kapatma
ongoing bool? false Kullanıcı tarafından kapatılamaz
silent bool? false Sessiz bildirim
color Color? - Vurgu rengi
largeIcon String? - Büyük simge kaynak yolu
onlyAlertOnce bool? false Yalnızca ilk gösterimde uyar
showWhen bool? true Zaman damgasını göster
when int? - Özel zaman damgası (epoch'tan ms)
usesChronometer bool? false Kronometre gösterimi kullan
chronometerCountDown bool? false Kronometre geri sayım yapar
channelShowBadge bool? true Kanalda rozet göster
showProgress bool? false İlerleme göstergesini göster
maxProgress int? 0 Maksimum ilerleme değeri
progress int? 0 Mevcut ilerleme değeri
indeterminate bool? false Belirsiz ilerleme
channelAction AndroidNotificationChannelAction? createIfNotExists Kanal eylemi
enableLights bool? false Bildirim LED'ini etkinleştir
ledColor Color? - LED rengi
ledOnMs int? - LED açık süresi (ms)
ledOffMs int? - LED kapalı süresi (ms)
visibility NotificationVisibility? - Kilit ekranı görünürlüğü
timeoutAfter int? - Otomatik kapatma zaman aşımı (ms)
fullScreenIntent bool? false Tam ekran intent olarak başlat
shortcutId String? - Kısayol ID'si
additionalFlags List<int>? - Ek bayraklar
tag String? - Bildirim etiketi
actions List<AndroidNotificationAction>? - Eylem düğmeleri
colorized bool? false Renklendirmeyi etkinleştir
audioAttributesUsage AudioAttributesUsage? notification Ses öznitelikleri kullanımı

iOS Yapılandırması

setIOSConfig() metoduna bir IOSNotificationConfig geçirin:

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 Özellikleri

Özellik Tür Varsayılan Açıklama
presentList bool? true Bildirim listesinde göster
presentAlert bool? true Uyarı göster
presentBadge bool? true Uygulama rozetini güncelle
presentSound bool? true Ses çal
presentBanner bool? true Banner göster
sound String? - Ses dosyası adı
badgeNumber int? - Rozet numarası
threadIdentifier String? - Gruplama için iş parçacığı tanımlayıcısı
categoryIdentifier String? - Eylemler için kategori tanımlayıcısı
interruptionLevel InterruptionLevel? - Kesinti seviyesi

Ekler (Yalnızca iOS)

iOS bildirimlerine resim, ses veya video ekleri ekleyin. Ekler bir URL'den indirilir:

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

Bildirimleri Yönetme

Belirli Bir Bildirimi İptal Etme

await LocalNotification.cancelNotification(42);

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

Tüm Bildirimleri İptal Etme

await LocalNotification.cancelAllNotifications();

Rozet Sayısını Temizleme

await LocalNotification.clearBadgeCount();

İzinler

Kullanıcıdan bildirim izinleri isteyin:

// 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',
);

İzinler, ilk bildirim gönderiminde NyScheduler.taskOnce aracılığıyla otomatik olarak istenir.

Platform Kurulumu

iOS Kurulumu

Info.plist dosyanıza ekleyin:

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

Android Kurulumu

AndroidManifest.xml dosyanıza ekleyin:

<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 Referansı

Statik Metotlar

Metot İmza Açıklama
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}) Tüm seçeneklerle bildirim gönder
cancelNotification static Future<void> cancelNotification(int id, {String? tag}) Belirli bir bildirimi iptal et
cancelAllNotifications static Future<void> cancelAllNotifications() Tüm bildirimleri iptal et
requestPermissions static Future<void> requestPermissions({...}) Bildirim izinlerini iste
clearBadgeCount static Future<void> clearBadgeCount() iOS rozet sayısını temizle

Örnek Metotlar (Zincirleme)

Metot Parametreler Döndürür Açıklama
addPayload String payload LocalNotification Yük verisi ayarla
addId int id LocalNotification Bildirim ID'si ayarla
addSubtitle String subtitle LocalNotification Alt başlık ayarla
addBadgeNumber int badgeNumber LocalNotification Rozet numarası ayarla
addSound String sound LocalNotification Özel ses ayarla
addAttachment String url, String fileName, {bool? showThumbnail} LocalNotification Ek ekle (iOS)
setAndroidConfig AndroidNotificationConfig config LocalNotification Android yapılandırması ayarla
setIOSConfig IOSNotificationConfig config LocalNotification iOS yapılandırması ayarla
send {DateTime? at, AndroidScheduleMode? androidScheduleMode} Future<void> Bildirimi gönder