Итак, я пытаюсь создать приложение, в котором я храню данные с помощью Firebase, приложение прослушивает изменения Firebase Firestore и отправляет уведомления через локальные уведомления. Моя проблема в том, что уведомление работает, когда приложение открывается, но не работает, когда приложение работает в фоновом режиме
, есть ли решение без использования push-уведомлений о пожарных сообщениях? и платная учетная запись разработчика 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как выполнять длительные задачи в фоновом режиме без отображения уведомлений
Anonymous » » в форуме JAVA - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как выполнять длительные задачи в фоновом режиме без отображения уведомлений
Anonymous » » в форуме Android - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как выполнять длительные задачи в фоновом режиме без каких-либо уведомлений?
Anonymous » » в форуме JAVA - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-