diff --git a/lib/main.dart b/lib/main.dart index 87d4457..4ade06f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -15,6 +15,7 @@ import 'services/local_storage_service.dart'; final navigatorKey = GlobalKey(); +@pragma('vm:entry-point') Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { LoggerService.logger.i('Handling a background message: ${message.messageId}'); if (message.data.isNotEmpty) { @@ -37,12 +38,12 @@ void main() async { } catch (error) { LoggerService.logger.e(error); } finally { + if (!kIsWeb) { // Initialize Firebase App Messaging await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, name: 'BaFiA_PushNotif', ); - if (!kIsWeb) { await ApiFirebase().initNotifications(); } } diff --git a/lib/services/api_firebase.dart b/lib/services/api_firebase.dart index dd5de55..6dd1e02 100644 --- a/lib/services/api_firebase.dart +++ b/lib/services/api_firebase.dart @@ -3,9 +3,9 @@ import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter/foundation.dart' show kIsWeb; -import 'package:url_launcher/url_launcher.dart'; -import '../main.dart'; -import 'local_storage_service.dart'; +//import 'package:url_launcher/url_launcher.dart'; +//import '../main.dart'; +//import 'local_storage_service.dart'; import 'logger_service.dart'; class ApiFirebase { @@ -57,7 +57,7 @@ class ApiFirebase { LoggerService.logger.i('Subscribed to topic: bafia-info'); } - Future handleMessage(RemoteMessage? message) async { + /* Future handleMessage(RemoteMessage? message) async { if (message == null) return; final link = message.data['link']; @@ -97,5 +97,5 @@ class ApiFirebase { } }); } - } + } */ } diff --git a/lib/services/bg_worker_service.dart b/lib/services/bg_worker_service.dart new file mode 100644 index 0000000..124650d --- /dev/null +++ b/lib/services/bg_worker_service.dart @@ -0,0 +1,14 @@ +import 'package:workmanager/workmanager.dart'; +import 'logger_service.dart'; +import 'local_storage_service.dart'; + +void callbackDispatcher() { + Workmanager().executeTask((task, inputData) async { + LoggerService.logger.i('Handling a background task: $task'); + if (inputData != null && inputData.isNotEmpty) { + LoggerService.logger.i('Task also contained data: $inputData'); + await LocalStorageService.saveMessageData(inputData); + } + return Future.value(true); + }); +} diff --git a/pubspec.lock b/pubspec.lock index d447eda..6d5d9eb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -129,14 +129,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" - dbus: - dependency: transitive - description: - name: dbus - sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" - url: "https://pub.dev" - source: hosted - version: "0.7.10" dev_build: dependency: transitive description: @@ -286,30 +278,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" - flutter_local_notifications: - dependency: "direct main" - description: - name: flutter_local_notifications - sha256: "0a9068149f0225e81642b03562e99776106edbd967816ee68bc16310d457c60e" - url: "https://pub.dev" - source: hosted - version: "17.2.1+1" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" - url: "https://pub.dev" - source: hosted - version: "4.0.0+1" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - sha256: "85f8d07fe708c1bdcf45037f2c0109753b26ae077e9d9e899d55971711a4ea66" - url: "https://pub.dev" - source: hosted - version: "7.2.0" flutter_localizations: dependency: "direct main" description: flutter @@ -858,14 +826,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.0" - timezone: - dependency: transitive - description: - name: timezone - sha256: "2236ec079a174ce07434e89fcd3fcda430025eb7692244139a9cf54fdcf1fc7d" - url: "https://pub.dev" - source: hosted - version: "0.9.4" typed_data: dependency: transitive description: @@ -962,6 +922,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.1" + workmanager: + dependency: "direct main" + description: + name: workmanager + sha256: ed13530cccd28c5c9959ad42d657cd0666274ca74c56dea0ca183ddd527d3a00 + url: "https://pub.dev" + source: hosted + version: "0.5.2" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 155ccc6..12f0b3b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,7 +43,7 @@ dependencies: path: ^1.9.0 firebase_core: ^3.2.0 firebase_messaging: ^15.0.3 - flutter_local_notifications: ^17.2.1+1 + #flutter_local_notifications: ^17.2.1+1 intl: ^0.19.0 syncfusion_flutter_gauges: ^26.1.41 image_picker: ^1.1.2 @@ -62,6 +62,7 @@ dependencies: flutter_pdfview: ^1.3.2 printing: ^5.13.1 pdf: ^3.11.0 + workmanager: ^0.5.2 dev_dependencies: flutter_test: