Запланированные уведомления не работают на iOS Flutter
Я использую flutter_local_notifications для планирования уведомлений в определенное время каждый день.
Пользователь может выбирать разные часовые пояса, он работает на Android, но не работает на iOS, так как у меня нет опыта работы с iOS, я не знаю, как он обрабатывает уведомления.
Future<void> _showNotification(
BuildContext? context,
NotificationDetails platformChannelSpecifics,
Prayer prayer,
DateTime dateTime) async {// dateTime is the time in another time zone, and time is the time passed to the zonedScheduled method
var time = _nextInstanceOfPrayer(dateTime);
if (time == null) {
return;
}
await flutterLocalNotificationsPlugin.zonedSchedule(
_getId(time, prayer: prayer.toString()),
prayer.toStr(context!),
_getPrayerText(prayer.toStr(context)),
time,
platformChannelSpecifics,
androidAllowWhileIdle: true,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
);}
И этот способ узнать время:
tzZone.TZDateTime? _nextInstanceOfPrayer(DateTime dateTime) {
final DateTime now = DateTime.now();
//converts time to specific location
tzZone.TZDateTime scheduledDate = tzZone.TZDateTime.from(
dateTime.subtract(now.timeZoneOffset),
tzZone.UTC,
);
if (scheduledDate.toUtc().isBefore(now.toUtc())) {
return null;
}
return scheduledDate;}
Я пытаюсь добавить уведомление во время (время) по местному времени телефона, например, пользователь выбирает часовой пояс +5 GMT (17:00), а местный часовой пояс, скажем, +2 GMT (14:00 PM). ), Я хочу добавить уведомление с местным временем (5:00PM +5 GMT) и показать его (5:00 +2 GMT).
Я попытался преобразовать оба времени в UTC и показать уведомление в UTC - местный часовой пояс (как показано во втором коде), код показывает, что есть ожидающие уведомления, но когда я меняю время устройства, он ничего не показывает .
Примечание: когда я добавляю ручное время через 5 секунд, оно работает отлично
DateTime.now().add(Duration(seconds: 5));