Если я пытаюсь создать приложение, в котором я храню данные с помощью Firebase, приложение прослушивает изменения Firebase Firestore и отправляет уведомления через локальные уведомления, моя проблема в том, что уведомление работает, когда приложение открыто, но не работает, когда приложение находится в фоновом режиме
, есть ли решение без использования push-уведомлений Firemessaging? и платная учетная запись разработчика Apple?
Я пытался создать фоновую службу с помощью flutter_background_services, но мне не удалось заставить ее работать.
вот мой код для флаттер-уведомлений:
import 'dart:async';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class NotificationService {
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin=FlutterLocalNotificationsPlugin();
NotificationService() {
initNotification();
}
Future initNotification() async{
AndroidInitializationSettings androidInitializationSettings= const AndroidInitializationSettings("app_logo");
var initialisationIos=DarwinInitializationSettings(
options: {
DarwinNotificationCategoryOption.hiddenPreviewShowTitle,
},
)
],requestSoundPermission: true,onDidReceiveLocalNotification:(id, title, body, payload)async {
} ,requestAlertPermission: true,requestBadgePermission: true);
var initialisationSettings=InitializationSettings(android: androidInitializationSettings,iOS: initialisationIos);
await flutterLocalNotificationsPlugin.initialize(initialisationSettings,onDidReceiveNotificationResponse: (details) {
},);
}
notificationDetails() async{
return const NotificationDetails(android: AndroidNotificationDetails(priority: Priority.high,sound: RawResourceAndroidNotificationSound("notification.mp3"),"channelId", "channelName",importance: Importance.max,)
,iOS: DarwinNotificationDetails(sound: "notification.caf",presentSound: true));
}
Future showNotificatio({int id=0 ,String? title,String?body , String? payload}) async{
return flutterLocalNotificationsPlugin.show(id, title, body, await notificationDetails(),payload: payload);
}
}
Моя неудачная попытка фоновой службы:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
);
await initializeService();
runApp(const MainApp());
}
bool firstSnapshot=true;
@pragma('vm:entry-point')
Future startFireBaseListener(ServiceInstance service) async{
WidgetsFlutterBinding.ensureInitialized();
DartPluginRegistrant.ensureInitialized();
FirebaseFirestore.instance.collection("journal").snapshots().listen((event) {
if(firstSnapshot){
firstSnapshot=false;
return;
}
final lastDoc= event.docChanges[event.docChanges.length-1];
if(lastDoc.type==DocumentChangeType.added){
NotificationService().showNotificatio(body: lastDoc.doc["body"],title: lastDoc.doc["title"]);
}
},);
return true;
}
Future initializeService()async{
try{
final flutterService=FlutterBackgroundService();
await flutterService.configure(iosConfiguration: IosConfiguration(autoStart: true,onBackground: (service) => startFireBaseListener(service),onForeground: (service) => startFireBaseListener(service),),
androidConfiguration: AndroidConfiguration(autoStart: true,autoStartOnBoot: true,onStart: (service) => startFireBaseListener(service), isForegroundMode: false,));
await flutterService.startService();
print("background service started");
}catch(e){
print(e.toString());
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-for-ios
Флаттер локальных уведомлений в фоновом режиме не работает для iOS ⇐ IOS
Программируем под IOS
-
Anonymous
1728862829
Anonymous
Если я пытаюсь создать приложение, в котором я храню данные с помощью Firebase, приложение прослушивает изменения Firebase Firestore и отправляет уведомления через локальные уведомления, моя проблема в том, что уведомление работает, когда приложение открыто, но не работает, когда приложение находится в фоновом режиме
, есть ли решение без использования push-уведомлений Firemessaging? и платная учетная запись разработчика Apple?
Я пытался создать фоновую службу с помощью flutter_background_services, но мне не удалось заставить ее работать.
вот мой код для флаттер-уведомлений:
import 'dart:async';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class NotificationService {
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin=FlutterLocalNotificationsPlugin();
NotificationService() {
initNotification();
}
Future initNotification() async{
AndroidInitializationSettings androidInitializationSettings= const AndroidInitializationSettings("app_logo");
var initialisationIos=DarwinInitializationSettings(
options: {
DarwinNotificationCategoryOption.hiddenPreviewShowTitle,
},
)
],requestSoundPermission: true,onDidReceiveLocalNotification:(id, title, body, payload)async {
} ,requestAlertPermission: true,requestBadgePermission: true);
var initialisationSettings=InitializationSettings(android: androidInitializationSettings,iOS: initialisationIos);
await flutterLocalNotificationsPlugin.initialize(initialisationSettings,onDidReceiveNotificationResponse: (details) {
},);
}
notificationDetails() async{
return const NotificationDetails(android: AndroidNotificationDetails(priority: Priority.high,sound: RawResourceAndroidNotificationSound("notification.mp3"),"channelId", "channelName",importance: Importance.max,)
,iOS: DarwinNotificationDetails(sound: "notification.caf",presentSound: true));
}
Future showNotificatio({int id=0 ,String? title,String?body , String? payload}) async{
return flutterLocalNotificationsPlugin.show(id, title, body, await notificationDetails(),payload: payload);
}
}
Моя неудачная попытка фоновой службы:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
);
await initializeService();
runApp(const MainApp());
}
bool firstSnapshot=true;
@pragma('vm:entry-point')
Future startFireBaseListener(ServiceInstance service) async{
WidgetsFlutterBinding.ensureInitialized();
DartPluginRegistrant.ensureInitialized();
FirebaseFirestore.instance.collection("journal").snapshots().listen((event) {
if(firstSnapshot){
firstSnapshot=false;
return;
}
final lastDoc= event.docChanges[event.docChanges.length-1];
if(lastDoc.type==DocumentChangeType.added){
NotificationService().showNotificatio(body: lastDoc.doc["body"],title: lastDoc.doc["title"]);
}
},);
return true;
}
Future initializeService()async{
try{
final flutterService=FlutterBackgroundService();
await flutterService.configure(iosConfiguration: IosConfiguration(autoStart: true,onBackground: (service) => startFireBaseListener(service),onForeground: (service) => startFireBaseListener(service),),
androidConfiguration: AndroidConfiguration(autoStart: true,autoStartOnBoot: true,onStart: (service) => startFireBaseListener(service), isForegroundMode: false,));
await flutterService.startService();
print("background service started");
}catch(e){
print(e.toString());
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79084384/flutter-local-notifications-on-the-background-not-working-for-ios[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия