Merhabalar, geliştirmek istediğim uygulamada planlı (tarih saat girilerek) bildirim göndermek istiyorum. flutter local notifications eklentisi ile ne yaptıysam başarılı bir sonuç alamadım. Anlık ve zamanlı bildirim gönderebiliyorum ancak datetime ile bir türlü verilmli olamıyor. schedule özelliği güncel eklentide kaldırılmış yerine zoneSchedule kullanılması tavsiye ediliyor. Kullanıyorum olmuyor, internette yapılan uygulamaların birebir aynısını yapsam da olmuyor. Sonuç olarak bir önerisi olan var mı? farklı bir eklenti ya da kod gibi. Teşekkürler.
Planlı bildirim
- Edited
Flutter öncelikle ilginiz için teşekkür ederim. Aslında kod çalışıyor. Aşağıda yazdığım kodu sizinle paylaştım. Benim istediğim, kullanıcı bir tarih ve bildirim almak istediği günü girecek, o istediği gün bildirim verilecek. Ancak kodda sanki “periodicallyShow” “RepeatInterval.daily” özelliği vermişim gibi günlük bildirim veriyor, tarihi görmüyor.
List<tz.TZDateTime> scheduledDateTimes = [];
DateTime startDate = DateTime.now();
Duration offsetTime= DateTime.now().timeZoneOffset;
Future<void> kurulum() async{
var androidAyari = const AndroidInitializationSettings("@mipmap/ic_launcher");
var iosAyari = const DarwinInitializationSettings();
var kurulumAyari= InitializationSettings(android: androidAyari,iOS: iosAyari);
await flp.initialize(kurulumAyari, onDidReceiveNotificationResponse: bildirimSecilme);
}
Future<void> bildirimSecilme(NotificationResponse notificationResponse) async{
var payload = notificationResponse.payload;
if(payload != null){
debugPrint('notification payload: $payload');
}
print("bildirim tıklandı");
}
Future<void> bildirimOlustur(simdikiYil, ay, gun, secilenBildirimGunu) async {
var androidBildirimDetay = const AndroidNotificationDetails(
"kanal adı",
"kanal içerik",
channelDescription: "kanal açıklama",
priority: Priority.high,
importance: Importance.max);
var iosBildirimDetay = const DarwinNotificationDetails();
var bildirimDetay = NotificationDetails(android: androidBildirimDetay, iOS: iosBildirimDetay);
var dateTime = DateTime((simdikiYil + 1), ay, (gun - secilenBildirimGunu), 10, 0,0,0,0);
tz.initializeTimeZones();
await flp.zonedSchedule(
0,
"Bildirim başlığı",
"Bildirim mesaj içeriği",
tz.TZDateTime.from(dateTime, tz.local),
bildirimDetay,
uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime,
androidAllowWhileIdle: true,
matchDateTimeComponents: DateTimeComponents.time,
payload: "Payload zamanlı içerik");
}
emreheper
periyodik bildirim için aşağıdaki kod işinize yarayabilir
const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails(
'repeating channel id', 'repeating channel name',
channelDescription: 'repeating description');
const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);
await flutterLocalNotificationsPlugin.periodicallyShow(0, 'repeating title',
'repeating body', RepeatInterval.everyMinute, notificationDetails,
androidAllowWhileIdle: true);
Denedim elimde samsung 7.0, huawei 9.0 ve huawei 11.0 sürümü olan 3 farklı cihaz var. Plugin 8.0 altındaki sürümlerde hata veriyor. Yanlış okumadıysam eksta bi kodlama yapmak gerektiği yazıyordu. ona henüz odaklanamadım. ama diğer cihazlarda aynı sorunla karşılaşıyorum.
Sanırım hata yazılan kod ile ilgili değil, flutter local notification eklentisi kaynaklı. Çünkü marketten indirdiğim farklı bir uygulamada benzer bir bildirim özelliği denk geldi. onda denedim onda da benim aldığım hatanın aynısı mevcut..
Müsait zamanda yapmak lazım