Локальные уведомления Flutter работают в отладке, но не в выпуске APK (приложение закрывается/уведомления не запускаютсяAndroid

Форум для тех, кто программирует под Android
Anonymous
Локальные уведомления Flutter работают в отладке, но не в выпуске APK (приложение закрывается/уведомления не запускаются

Сообщение Anonymous »


Описание
Я создаю приложение Flutter для повышения производительности, которое помогает пользователям оставаться сосредоточенными, отслеживая сеансы и планируя напоминания о задачах с помощью локальных уведомлений.
Обзор приложения
  • Пользователи могут создавать задачи с определенным временем напоминания
  • Каждая задача планирует локальное уведомление.
  • Пользователи могут начинать сеансы фокусировки (на основе таймера).
  • Приложение отслеживает такую статистику, как:

    общее время концентрации
  • ежедневный прогресс
  • полосы
[*]При запуске приложения все сохраненные задачи перезагружаются и уведомления переносятся



Проблема
В режиме отладки все работает правильно, но в релизном APK:
  • ❌ Уведомления не срабатывают
  • ❌ Приложение иногда автоматически закрывается при запуске
  • ❌ Ранее запланированные задачи не отправляют уведомления
Что я делаю
Инициализация (main.dart)

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

void main() async {
WidgetsFlutterBinding.ensureInitialized();

try {
await NotificationService.init();

final taskService = TaskService();
await taskService.rescheduleAllTasks();
} catch (e) {
// prevent crash
}

if (Platform.isAndroid) {
final androidInfo = await DeviceInfoPlugin().androidInfo;
if (androidInfo.version.sdkInt >= 33) {
await Permission.notification.request();
}
}

runApp(const FlamziApp());
}
Планирование уведомлений

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

await notificationsPlugin.zonedSchedule(
id,
title,
body,
scheduledDate,
notificationDetails,
androidScheduleMode: AndroidScheduleMode.inexactAllowWhileIdle,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
);
То, что я уже проверил
  • Разрешение на уведомления предоставлено
  • Использование действительного будущего времени (не прошлого)
  • Отлично работает в режиме отладки
  • Нет видимых ошибок в журналах отладки
  • Использование планирования на основе часового пояса (

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

    zonedSchedule
    )
  • Использование режима inexactAllowWhileIdle
Ожидаемое поведение
  • Уведомления должны срабатывать в запланированное время
  • Приложение не должно аварийно завершать работу при запуске
  • Задачи должны корректно перепланироваться при запуске приложения
Фактическое поведение (выпуск APK)
  • Уведомления никогда не появляются
  • Приложение иногда сразу же закрывается при запуске
  • Кажется, что планирование происходит незаметно

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