Мне нужно отправить уведомление пользователю, когда приложение закрывается пользователем или системой. Теперь у меня есть таймер на 15 секунд, и каждый раз, когда я планирую 30-секундное c уведомление, как это:
Timer doNotCloseTimer;
makeDoNotCloseNotification(){
String notificationHeader = "App closed!";
var androidChannelSpecifics = AndroidNotificationDetails(
// Android notification settings
);
var iOSChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(androidChannelSpecifics, iOSChannelSpecifics);
var scheduledNotificationDateTime = DateTime.now().add(Duration(seconds: 30));
if(doNotCloseTimer == null)
doNotCloseTimer = Timer.periodic(Duration(seconds: 15), (timer) async {
await flutterLocalNotificationsPlugin.cancel(NOTIFICATION_DO_NOT_CLOSE_ID);
makeDoNotCloseNotification();
});
await flutterLocalNotificationsPlugin.schedule(
NOTIFICATION_DO_NOT_CLOSE_ID,
notificationHeader,
"",
scheduledNotificationDateTime,
platformChannelSpecifics,
payload: "DoNotClosePayload"
);
}
Приложение завершается с таймером и приходит уведомление. Но есть много проблем, почему-то только в режиме релиза, когда я не могу понять, что происходит. Иногда таймер не работает, и уведомление приходит, когда приложение открыто в фоновом режиме. Как это правильно делать? Спасибо.
UPD: часть AndroidManifest В теге :
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
И внутри
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>