From 861681881098621a9fe62ad275067e4ba5c52d35 Mon Sep 17 00:00:00 2001 From: 12henbx Date: Fri, 10 Nov 2023 11:02:16 +0700 Subject: [PATCH 1/6] add firebase messaging lib, initilize firebase push notif --- app/lib/api/firebase_api.dart | 11 +++++++ app/lib/main.dart | 2 ++ app/lib/services/firebase_service.dart | 14 ++++++++ .../Flutter/GeneratedPluginRegistrant.swift | 2 ++ app/pubspec.lock | 32 ++++++++++++++++--- app/pubspec.yaml | 1 + 6 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 app/lib/api/firebase_api.dart diff --git a/app/lib/api/firebase_api.dart b/app/lib/api/firebase_api.dart new file mode 100644 index 0000000..4fe3e60 --- /dev/null +++ b/app/lib/api/firebase_api.dart @@ -0,0 +1,11 @@ +import 'package:firebase_messaging/firebase_messaging.dart'; + +class FirebaseApi { + final _firebaseMessaging = FirebaseMessaging.instance; + + Future initNotifications() async { + await _firebaseMessaging.requestPermission(); + final fCMToken = await _firebaseMessaging.getToken(); + print('Token: $fCMToken'); + } +} \ No newline at end of file diff --git a/app/lib/main.dart b/app/lib/main.dart index 24c5a77..a6f9110 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'api/firebase_api.dart'; import 'app.dart'; import 'services/di.dart'; import 'services/firebase_service.dart'; @@ -10,5 +11,6 @@ Future main() async { await dotenv.load(); configureDependencies(); await FirebaseService.initialize(); + await FirebaseApi().initNotifications(); runApp(const App()); } diff --git a/app/lib/services/firebase_service.dart b/app/lib/services/firebase_service.dart index fcc272b..ca441d4 100644 --- a/app/lib/services/firebase_service.dart +++ b/app/lib/services/firebase_service.dart @@ -1,11 +1,18 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; import '../firebase_options.dart'; import 'app_logger.dart'; +Future handleBackgroundMessage(RemoteMessage message) async { + print('Title: ${message?.notification?.title}'); +} + class FirebaseService { static late FirebaseApp app; + final _firebaseMessaging = FirebaseMessaging.instance; + static Future initialize() async { app = await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, @@ -16,4 +23,11 @@ class FirebaseService { static FirebaseAuth auth() { return FirebaseAuth.instanceFor(app: app); } + + Future initNotifications() async { + await _firebaseMessaging.requestPermission(); + final fCMToken = await _firebaseMessaging.getToken(); + print('Token: $fCMToken'); + FirebaseMessaging.onBackgroundMessage(handleBackgroundMessage); + } } diff --git a/app/macos/Flutter/GeneratedPluginRegistrant.swift b/app/macos/Flutter/GeneratedPluginRegistrant.swift index afedfa3..707568d 100644 --- a/app/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/app/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,6 +8,7 @@ import Foundation import cloud_firestore import firebase_auth import firebase_core +import firebase_messaging import firebase_storage import flutter_local_notifications import geolocator_apple @@ -20,6 +21,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FLTFirebaseStoragePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseStoragePlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) diff --git a/app/pubspec.lock b/app/pubspec.lock index 6d8efc1..7c6b063 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "7bcb5c5d62b3907fb4a269c0f0843df46760d38e12829a715f2ff1fb492f19ef" + sha256: "5dadadeecceac19d6a63c9d2e037bb8df58ddd4aedb94e8a056af2f39ee50f9d" url: "https://pub.dev" source: hosted - version: "1.3.10" + version: "1.3.11" analyzer: dependency: transitive description: @@ -357,10 +357,10 @@ packages: dependency: "direct main" description: name: firebase_core - sha256: "37299e4907391d7fac8c7ea059bb3292768cc07b72b6c6c777675cc58da2ef4d" + sha256: "7706f4ade6cc2698c70074083bc262586a185047f6bfdd53938dcc35d35cbb9e" url: "https://pub.dev" source: hosted - version: "2.20.0" + version: "2.21.0" firebase_core_platform_interface: dependency: transitive description: @@ -377,6 +377,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.8.1" + firebase_messaging: + dependency: "direct main" + description: + name: firebase_messaging + sha256: "53952a6f7860c44429bec80719c411e0ff77ce6cf31fade1515c7bdd87abe4a1" + url: "https://pub.dev" + source: hosted + version: "14.7.3" + firebase_messaging_platform_interface: + dependency: transitive + description: + name: firebase_messaging_platform_interface + sha256: "543390d1c76aaf3fa563de223d1732a5def5a5efe31428e43a44e9a47efc5ed3" + url: "https://pub.dev" + source: hosted + version: "4.5.12" + firebase_messaging_web: + dependency: transitive + description: + name: firebase_messaging_web + sha256: ecfe4e851652dc5f40f1e42efcac0c2bc6bf5ef08faca936c94e1472c247d222 + url: "https://pub.dev" + source: hosted + version: "3.5.12" firebase_storage: dependency: "direct main" description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 546ea6e..2ffe705 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -63,6 +63,7 @@ dependencies: firebase_storage: ^11.3.1 flutter_html: ^3.0.0-beta.2 printing: ^5.11.0 + firebase_messaging: ^14.7.3 dev_dependencies: build_runner: null From adc75ea44980bf1317fb5d3d32badb62a9590aed Mon Sep 17 00:00:00 2001 From: 12henbx Date: Fri, 10 Nov 2023 14:32:56 +0700 Subject: [PATCH 2/6] add functionality to go to a page after user click notif --- app/lib/api/firebase_api.dart | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/lib/api/firebase_api.dart b/app/lib/api/firebase_api.dart index 4fe3e60..655bcdd 100644 --- a/app/lib/api/firebase_api.dart +++ b/app/lib/api/firebase_api.dart @@ -1,11 +1,36 @@ import 'package:firebase_messaging/firebase_messaging.dart'; +import '../services/firebase_service.dart'; +import '../services/router_service.dart'; + + class FirebaseApi { final _firebaseMessaging = FirebaseMessaging.instance; + void handleMessage(RemoteMessage? message) { + if (message == null) return; + + router.push('/material'); + } + + Future initPushNotfications() async { + await FirebaseMessaging.instance + .setForegroundNotificationPresentationOptions( + alert: true, + badge: true, + sound: true, + ); + + FirebaseMessaging.instance.getInitialMessage().then(handleMessage); + FirebaseMessaging.onMessageOpenedApp.listen(handleMessage); + FirebaseMessaging.onBackgroundMessage(handleBackgroundMessage); + + } + Future initNotifications() async { await _firebaseMessaging.requestPermission(); final fCMToken = await _firebaseMessaging.getToken(); print('Token: $fCMToken'); + initPushNotfications(); } } \ No newline at end of file From fec8899b54c86c673efb338694e15e33e8af1e86 Mon Sep 17 00:00:00 2001 From: 12henbx Date: Fri, 10 Nov 2023 14:39:18 +0700 Subject: [PATCH 3/6] refactor code flutter analyze --- app/lib/api/firebase_api.dart | 8 ++++---- app/lib/features/main/presentation/pages/main_page.dart | 2 +- .../onboarding/presentation/pages/splash_screen.dart | 1 - app/lib/services/firebase_service.dart | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/lib/api/firebase_api.dart b/app/lib/api/firebase_api.dart index 655bcdd..b660878 100644 --- a/app/lib/api/firebase_api.dart +++ b/app/lib/api/firebase_api.dart @@ -13,7 +13,7 @@ class FirebaseApi { router.push('/material'); } - Future initPushNotfications() async { + Future initPushNotfications() async { await FirebaseMessaging.instance .setForegroundNotificationPresentationOptions( alert: true, @@ -21,7 +21,7 @@ class FirebaseApi { sound: true, ); - FirebaseMessaging.instance.getInitialMessage().then(handleMessage); + await FirebaseMessaging.instance.getInitialMessage().then(handleMessage); FirebaseMessaging.onMessageOpenedApp.listen(handleMessage); FirebaseMessaging.onBackgroundMessage(handleBackgroundMessage); @@ -31,6 +31,6 @@ class FirebaseApi { await _firebaseMessaging.requestPermission(); final fCMToken = await _firebaseMessaging.getToken(); print('Token: $fCMToken'); - initPushNotfications(); + await initPushNotfications(); } -} \ No newline at end of file +} diff --git a/app/lib/features/main/presentation/pages/main_page.dart b/app/lib/features/main/presentation/pages/main_page.dart index 148556a..022ce95 100644 --- a/app/lib/features/main/presentation/pages/main_page.dart +++ b/app/lib/features/main/presentation/pages/main_page.dart @@ -48,7 +48,7 @@ class _MainPageState extends State { children: [ TextSpan( text: toBeginningOfSentenceCase( - '${useData?['name']}!'), + '${useData?['name']}!',), style: FontTheme.blackTitleBold(), ), ], diff --git a/app/lib/features/onboarding/presentation/pages/splash_screen.dart b/app/lib/features/onboarding/presentation/pages/splash_screen.dart index af6291c..ef7c291 100644 --- a/app/lib/features/onboarding/presentation/pages/splash_screen.dart +++ b/app/lib/features/onboarding/presentation/pages/splash_screen.dart @@ -18,7 +18,6 @@ class SplashScreen extends StatelessWidget { }, child: Scaffold( body: Column( - crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( child: Padding( diff --git a/app/lib/services/firebase_service.dart b/app/lib/services/firebase_service.dart index ca441d4..0f8d68d 100644 --- a/app/lib/services/firebase_service.dart +++ b/app/lib/services/firebase_service.dart @@ -6,7 +6,7 @@ import '../firebase_options.dart'; import 'app_logger.dart'; Future handleBackgroundMessage(RemoteMessage message) async { - print('Title: ${message?.notification?.title}'); + print('Title: ${message.notification?.title}'); } class FirebaseService { From cb15467e2573c193c30243db994577d76c4c1b42 Mon Sep 17 00:00:00 2001 From: 12henbx Date: Wed, 15 Nov 2023 23:47:46 +0700 Subject: [PATCH 4/6] add notification icon --- app/android/app/src/main/AndroidManifest.xml | 5 ++++- .../src/main/res/drawable/notification_icon.png | Bin 0 -> 80708 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 app/android/app/src/main/res/drawable/notification_icon.png diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml index 5d8c11f..a37c110 100644 --- a/app/android/app/src/main/AndroidManifest.xml +++ b/app/android/app/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ @@ -34,5 +34,8 @@ + diff --git a/app/android/app/src/main/res/drawable/notification_icon.png b/app/android/app/src/main/res/drawable/notification_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..db31e9eb1e0d13d4a83f9b38a14842983a17de04 GIT binary patch literal 80708 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 Date: Mon, 20 Nov 2023 00:14:02 +0700 Subject: [PATCH 5/6] save fcm token to user_registered collection firestore, fix user regist fields --- app/lib/api/firebase_api.dart | 29 +++++++++++++++---- .../presentation/pages/register_page.dart | 8 +++-- app/lib/services/firebase_service.dart | 8 ----- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/app/lib/api/firebase_api.dart b/app/lib/api/firebase_api.dart index b660878..688d68a 100644 --- a/app/lib/api/firebase_api.dart +++ b/app/lib/api/firebase_api.dart @@ -1,11 +1,12 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import '../services/firebase_service.dart'; import '../services/router_service.dart'; - class FirebaseApi { final _firebaseMessaging = FirebaseMessaging.instance; + final currentUser = FirebaseService.auth().currentUser; void handleMessage(RemoteMessage? message) { if (message == null) return; @@ -24,13 +25,29 @@ class FirebaseApi { await FirebaseMessaging.instance.getInitialMessage().then(handleMessage); FirebaseMessaging.onMessageOpenedApp.listen(handleMessage); FirebaseMessaging.onBackgroundMessage(handleBackgroundMessage); - } Future initNotifications() async { - await _firebaseMessaging.requestPermission(); - final fCMToken = await _firebaseMessaging.getToken(); - print('Token: $fCMToken'); - await initPushNotfications(); + await _firebaseMessaging.requestPermission(); + + FirebaseMessaging.instance.onTokenRefresh.listen((fcmToken) { + Map deviceToken = { + 'fcm_token': fcmToken, + 'fcm_timestamp': FieldValue.serverTimestamp(), + }; + + // Reference to the Firestore collection + CollectionReference> fcmTokensCollection = + FirebaseFirestore.instance.collection('registered_user'); + + // Set the device token in Firestore + fcmTokensCollection.doc(currentUser!.uid).update(deviceToken); + }).onError((err) { + // Error getting token. + }); + + final fCMToken = await _firebaseMessaging.getToken(); + print('Token: $fCMToken'); + await initPushNotfications(); } } diff --git a/app/lib/features/authentication/register/presentation/pages/register_page.dart b/app/lib/features/authentication/register/presentation/pages/register_page.dart index ee06603..8fbaa26 100644 --- a/app/lib/features/authentication/register/presentation/pages/register_page.dart +++ b/app/lib/features/authentication/register/presentation/pages/register_page.dart @@ -160,7 +160,9 @@ class _RegisterPageState extends State { (val) { return state.province.error; }, - state.province.value, + state.province.value.isNotEmpty + ? state.province.value + : 'Provinsi', ), BiroBebrasDropdown( 'Bebras Biro', @@ -176,7 +178,9 @@ class _RegisterPageState extends State { (val) { return state.bebrasBiro.error; }, - state.bebrasBiro.value, + state.bebrasBiro.value.isNotEmpty + ? state.bebrasBiro.value + : 'Bebras Biro', ), const SizedBox(height: 20), BlocConsumer( diff --git a/app/lib/services/firebase_service.dart b/app/lib/services/firebase_service.dart index 0d50fd2..236c8d1 100644 --- a/app/lib/services/firebase_service.dart +++ b/app/lib/services/firebase_service.dart @@ -12,7 +12,6 @@ Future handleBackgroundMessage(RemoteMessage message) async { class FirebaseService { static late FirebaseApp app; - final _firebaseMessaging = FirebaseMessaging.instance; static Future initialize() async { app = await Firebase.initializeApp( @@ -27,11 +26,4 @@ class FirebaseService { static FirebaseAuth auth() { return FirebaseAuth.instanceFor(app: app); } - - Future initNotifications() async { - await _firebaseMessaging.requestPermission(); - final fCMToken = await _firebaseMessaging.getToken(); - print('Token: $fCMToken'); - FirebaseMessaging.onBackgroundMessage(handleBackgroundMessage); - } } From fc7fe85382e73305f16c76023fbdcf1d32e2b7f8 Mon Sep 17 00:00:00 2001 From: 12henbx Date: Wed, 22 Nov 2023 21:47:43 +0700 Subject: [PATCH 6/6] change route when handle message --- app/lib/api/firebase_api.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/api/firebase_api.dart b/app/lib/api/firebase_api.dart index 688d68a..6d04d0d 100644 --- a/app/lib/api/firebase_api.dart +++ b/app/lib/api/firebase_api.dart @@ -11,7 +11,7 @@ class FirebaseApi { void handleMessage(RemoteMessage? message) { if (message == null) return; - router.push('/material'); + router.push('/main'); } Future initPushNotfications() async {