التعامل مع استقبال الاشعارات من Firebase في تطبيقات فلاتر | Receive notifications from FCM Flutter
هذا الدرس تكملة لسلسلة التعامل مع firebase باستخدام Flutter حيث اننا في هذا الدرس سوف نشرح معكم كيف تقوم باستقبال الاشعارات في تطبيقك بعدة اشكال في حالة اذا كان التطبيق مغلق بشكل كامل واذا كان التطبيق الخاص بك في وضع السكون او كان التطبيق الخاص بك مفتوح فكل حاله لها تعامل خاص في تطبيقك حيث سوف نشرح معكم في هذه المقالة التعامل مع الحالات المختلفه في تطبيقك حيث لا يحدث معك اي مشاكل مستقبله في التعامل مع الاشعارات بانواعها المختلفه .
الإشعارات هي طريقة فعالة لجذب انتباه المستخدمين وإبقائهم على اطلاع بأحدث المعلومات من تطبيقك. في تطبيقات Flutter، يمكننا استخدام خدمة الإشعارات من Google Cloud (FCM) لإرسال إشعارات إلى المستخدمين , تطبيقات فلاتر: Flutter هي لغة برمجة مفتوحة المصدر تستخدم لتطوير تطبيقات الهاتف الجوال والويب , يمكن استخدام Flutter لتطوير تطبيقات الهاتف الجوال والويب.
ما هي خدمة الإشعارات من Google Cloud (FCM)؟
خدمة الإشعارات من Google Cloud (FCM) هي خدمة سحابية تتيح للمطورين إرسال إشعارات إلى المستخدمين عبر الأجهزة المحمولة. يمكن استخدام FCM لإرسال إشعارات إلى أجهزة Android و iOS و Web.
كيفية استخدام FCM في Flutter
لاستخدام FCM في Flutter، نحتاج إلى إنشاء حساب في Google Cloud Platform وإنشاء مشروع. بعد إنشاء المشروع، يمكننا تثبيت حزمة firebase_messaging من pub.dev.
انواع الوظائف المختلفه عند وصول اشعار في تطبيقك وكيفية التعامل معه في Flutter
getInitialMessage : تعمل هذه الداله في حالة ان التطبيق الخاص بك مغلق بشكل كامل وليس في السكون بمعنى اصح تعمل اذا كان تطبيقك في kill background .
onMessage : تعمل هذه الدالة في حالة اذا كان التطبيق الخاص بك مفتوح وليس مغلق
onMessageOpenedApp : تعمل اذا اصبح تطبيقك في حالة onResume وهيا الحالة التي تعمل في وضع التطبيق الخاص بك رجع من السكون .
fun.dart
// workaround for onLaunch: When the app is completely closed
FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage message) {
print('getInitialMessage data: ${message.data}');
_serialiseAndNavigate(message);
});
// onMessage: When the app is open and it receives a push notification
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print("onMessage data: ${message.data}");
});
// replacement for onResume:
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('onMessageOpenedApp data: ${message.data}');
_serialiseAndNavigate(message);
});
التعامل مع وصول الاشعارات في حالة اذا كان التطبيق مغلق بشكل كامل في مشروعك بفلاتر
ايضا لكي يعمل التطبيق الخاص بك في الخلفيه عليك بوضع الاكواد التاليه في صفحة main فهي المسؤوله ايضا عن استقبال الاشعارات في حالة ال background حتى لا يحدث معك مشاكل .
background.dart
Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
NotificationService().showNotification(message.notification!);
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await sl.init();
FirebaseMessaging.onBackgroundMessage(
firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
اذا كان لديك مشكلة في استقبال الايقونه يمكنك اضافة الاكواد التاليه في الامكان المناسبه كما هو موضح بالصورة حتى تضمن ان لا يحدث معك مشاكل في عملية الاستقبال