Flutter: локальные уведомления не работают в режиме выпуска iOSIOS

Программируем под IOS
Ответить
Anonymous
 Flutter: локальные уведомления не работают в режиме выпуска iOS

Сообщение Anonymous »


Я использую пакет flutter_local_notifications для отображения уведомлений в приложении и за его пределами (фоновый режим). Все работает как положено на Android (отладка + выпуск) и в режиме отладки iOS, но, как ни странно, локальные уведомления не отображаются в фоновом режиме для выпуска iOS.

Я не знаю, почему режим выпуска iOS ведет себя по-другому, есть мысли?

Спасибо.

Что я уже проверил:
[*]использование последней версии пакета flutter_local_notifications (v16.1.0) [*]проверка «Подписание и возможности» как для режима отладки, так и для режима выпуска (фоновые режимы: выборка, удаленные уведомления)
Мой класс уведомлений:
import 'dart:async'; импортировать «пакет: flutter_local_notifications/flutter_local_notifications.dart»; класс ПолученноеУведомление { ПолученоУведомление({ требуется this.id, требуется это.title, требуется это.body, требуется this.payload, }); окончательный внутренний идентификатор; последняя строка? заголовок; последняя строка? тело; последняя строка? полезная нагрузка; } /// Действие уведомления, которое запускает событие навигации по приложению const String NavigationActionId = 'id_3'; @pragma('vm:точка входа') void NotificationTapBackground (NotificationResponse NotificationResponse) { // игнорировать: escape_print print('notification(${notificationResponse.id}) действие коснулось: ' '${notificationResponse.actionId} с' 'полезная нагрузка: ${notificationResponse.payload}'); if (notificationResponse.input?.isNotEmpty ?? false) { // игнорировать: escape_print Распечатать( 'действие уведомления, выполненное с помощью ввода: ${notificationResponse.input}'); } } класс NotificationService { //Одноэлементный шаблон статический окончательный NotificationService _notificationService = NotificationService._internal(); фабрика NotificationService() { вернуть _notificationService; } NotificationService._internal(); /// Потоки создаются для того, чтобы приложение могло реагировать на события, связанные с уведомлениями /// поскольку плагин инициализируется в функции `main` окончательный StreamController DidReceiveLocalNotificationStream = StreamController.broadcast(); окончательный StreamController selectNotificationStream = StreamController.broadcast(); //экземпляр FlutterLocalNotificationsPlugin окончательный плагин FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = Плагин FlutterLocalNotifications(); Future Initialize() async { const AndroidInitializationSettings инициализацияSettingsAndroid = AndroidInitializationSettings('@drawable/iclauncher'); //Настройки инициализации для устройств iOS окончательная инициализация DarwinInitializationSettingsDarwin = Настройки инициализации Дарвина( запросSoundPermission: правда, requestBadgePermission: правда, запросАлертПермиссион: правда, onDidReceiveLocalNotification: (int id, String? title, String? body, String? payload) async { DidReceiveLocalNotificationStream.add( Получено уведомление( я сделал, заголовок: заголовок, тело: тело, полезная нагрузка: полезная нагрузка, ), ); }, ); окончательные настройки InitializationSettings = InitializationSettings( Android: инициализацияSettingsAndroid, iOS: инициализацияSettingsDarwin, ); дождитесь флаттераLocalNotificationsPlugin.initialize( настройки, onDidReceiveNotificationResponse: (УведомлениеОтветОтвет) { переключатель (notificationResponse.notificationResponseType) { случай NotificationResponseType.selectedNotification: selectNotificationStream.add(notificationResponse.payload); перерыв; случай NotificationResponseType.selectedNotificationAction: if (notificationResponse.actionId == NavigationActionId) { selectNotificationStream.add(notificationResponse.payload); } перерыв; } }, onDidReceiveBackgroundNotificationResponse: уведомлениеTapBackground, ); } Future _notificationDetails() async { const AndroidNotificationDetails androidNotificationDetails = AndroidNotificationDetails( 'идентификатор канала', 'Название канала', playSound: правда, приоритет: Приоритет.высокий, важность: Важность.высокая, ); const NotificationDetails NotificationDetails = NotificationDetails (android: androidNotificationDetails); уведомление о возвратеПодробности; } Future showNotification({ требуемый внутренний идентификатор, обязательный заголовок строки, требуется тело строки, }) асинхронный { окончательные детали = ждут _notificationDetails(); дождитесь flutterLocalNotificationsPlugin.show(id, заголовок, тело, подробности); } }
Ответить

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

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

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

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

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