Как запустить активность нажатия кнопки уведомления даже после закрытия приложенияAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Как запустить активность нажатия кнопки уведомления даже после закрытия приложения

Сообщение Гость »

У меня есть приложение для напоминаний. Когда приходит время, для указанных напоминаний отображаются уведомления. У меня есть кнопка «Готово», которая удаляет напоминание из базы данных.
Удаление напоминания из базы данных возможно, когда приложение работает в фоновом режиме, но не когда приложение закрыто.
При закрытии я нажимаю кнопку «Готово» в уведомлении и открываю приложение, чтобы проверить, но все еще вижу напоминание, которое следовало удалить.
Вот код моего файла Notification.dart:

Код: Выделить всё

import 'package:awesome_notifications/awesome_notifications.dart';
import 'package:nagger/data/reminders_data.dart';
// import 'package:timezone/timezone.dart' as tz;

class NotificationController {
// final notificationsPlugin = AwesomeNotifications();
static ReceivedAction? initialAction;
static void Function()? refreshHomePageCallback;

static Future initializeLocalNotifications() async {
await AwesomeNotifications().initialize(
null,
[
NotificationChannel(
channelKey: '111',
channelName: 'nice_channel_name',
channelDescription: 'Shows Reminder Notification',
)
],
);

initialAction = await AwesomeNotifications()
.getInitialNotificationAction(removeFromActionEvents: false);
}

static void initializeCallback(void Function() func) {
refreshHomePageCallback = func;
}

static Future showNotification(String notifTitle) async {
await AwesomeNotifications().createNotification(
content: NotificationContent(
id: 0,
channelKey: '111',
title: notifTitle,
),
actionButtons: [
NotificationActionButton(
key: 'done',
label: 'Done'
)
]
);
}

Future scheduleNotification(
int notifID,
String notifTitle,
DateTime scheduleNotificationDateTime
) async {
return await AwesomeNotifications().createNotification(
content: NotificationContent(
id: notifID,
channelKey: '111',
title: notifTitle,
payload: {
"App name": "Nagger"
},
autoDismissible: false
),
actionButtons: [
NotificationActionButton(
key: 'done',
label: 'Done',
actionType: ActionType.SilentBackgroundAction
),
],
schedule: NotificationCalendar(
year: scheduleNotificationDateTime.year,
month: scheduleNotificationDateTime.month,
day: scheduleNotificationDateTime.day,
hour: scheduleNotificationDateTime.hour,
minute: scheduleNotificationDateTime.minute,
second: scheduleNotificationDateTime.second,
millisecond: scheduleNotificationDateTime.millisecond
)
);
}

Future cancelScheduledNotification(int id) async {
await AwesomeNotifications().cancel(id);
print("$id cancelled scheduled notification.");
}

static Future startListeningNotificationEvents() async {
AwesomeNotifications().setListeners(onActionReceivedMethod: onActionReceivedMethod);
}

static Future onActionReceivedMethod(
ReceivedAction receivedAction
) async {

if (receivedAction.buttonKeyPressed == 'done') {
final db = RemindersData();
db.deleteReminder(receivedAction.id ?? 7);
// refreshHomePageCallback!();
}
else
{
print("Unknown action with notification.");
}
}
}
Как сделать так, чтобы оно работало, даже когда приложение закрыто?

Подробнее здесь: https://stackoverflow.com/questions/780 ... tion-is-cl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»