Flutter Dev نشر 27 مايو 2021 أرسل تقرير نشر 27 مايو 2021 السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع قمت بستعمال احدث اصدار من اشعارات فايربيز في فلاتر الكود شغال اذا كنت خارج التطبيق لا توجد مشكله ولكن لو كنت داخل التطبيق لا يتم عرض الاشعارات للمستخدم لا اعلم ما هو الجزء المتبقي في الامر الكود كامل: Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { print("Handling a background message: ${message.messageId}"); } void main() async { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Notify', theme: ThemeData( primarySwatch: Colors.deepPurple, ), debugShowCheckedModeBanner: false, home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { FirebaseMessaging _messaging; int _totalNotifications; PushNotification _notificationInfo; void registerNotification() async { await Firebase.initializeApp();_messaging = FirebaseMessaging.instance; FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); NotificationSettings settings = await _messaging.requestPermission( alert: true, badge: true, provisional: false, sound: true, ); if (settings.authorizationStatus == AuthorizationStatus.authorized) { print('User granted permission'); FirebaseMessaging.onMessage.listen((RemoteMessage message) { print( 'Message title: ${message.notification?.title}, body: ${message.notification?.body}, data: ${message.data}'); // Parse the message received PushNotification notification = PushNotification( title: message.notification?.title, body: message.notification?.body, dataTitle: message.data['title'], dataBody: message.data['body'], ); setState(() { _notificationInfo = notification; _totalNotifications++; }); if (_notificationInfo != null) { showNotification; } }); } else { print('User declined or has not accepted permission'); } } static void showNotification(String title, String body) async { await _demoNotification(title, body); } static Future<void> _demoNotification(String title, String body) async { var androidPlatformChannelSpecifics = AndroidNotificationDetails( 'channel_ID', 'channel name', 'channel description', importance: Importance.max, playSound: true, // sound: 'sound', // sound: true, showProgress: true, priority: Priority.high, ticker: 'test ticker'); var iOSChannelSpecifics = IOSNotificationDetails(); var platformChannelSpecifics = NotificationDetails( android: androidPlatformChannelSpecifics, iOS: iOSChannelSpecifics); await flutterLocalNotificationsPlugin .show(0, title, body, platformChannelSpecifics, payload: 'test'); } static FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); static void initialization(){ var initializationSettingsAndroid = new AndroidInitializationSettings('@mipmap/ic_launcher'); var initializationSettingsIOS = new IOSInitializationSettings(); var initializationSettings = new InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsIOS); flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: onSelectNotification); } static Future onSelectNotification(String payload) async { showDialog( // context: context, builder: (_) { return new AlertDialog( title: Text("PayLoad"), content: Text("Payload : $payload"), ); }, ); } // For handling notification when the app is in terminated state checkForInitialMessage() async { await Firebase.initializeApp(); RemoteMessage initialMessage = await FirebaseMessaging.instance.getInitialMessage(); if (initialMessage != null) { PushNotification notification = PushNotification( title: initialMessage.notification?.title, body: initialMessage.notification?.body, dataTitle: initialMessage.data['title'], dataBody: initialMessage.data['body'], ); setState(() { _notificationInfo = notification; _totalNotifications++; }); } } @override void initState() { _totalNotifications = 0; registerNotification(); checkForInitialMessage(); FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { PushNotification notification = PushNotification( title: message.notification?.title, body: message.notification?.body, dataTitle: message.data['title'], dataBody: message.data['body'], ); setState(() { _notificationInfo = notification; _totalNotifications++; }); }); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Notify'), brightness: Brightness.dark, ), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ ], ), ); } } اقتباس
1 Wael Aljamal نشر 28 مايو 2021 أرسل تقرير نشر 28 مايو 2021 بالنسبة لتشغيل الإشعارات في وضع تشغيل التطبيق أي بحالة Foreground Notifications يوجد طريقة مختلفة لتشغيلها. لاحظ في الشيفرة لديك، قمت بعمل دالة للتعامل مع Background Notifications وهي: FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); أمالتشغيل الإشعارت بالواجهة تاكد من اتباع التوثيق: notifications/#foreground-notifications حيث يعمل على الدالة: setForegroundNotificationPresentationOptions مثال المكتبة: firebase_messaging/example من التوثيق. مثال منشور على gitHub يمكنك تجربته و التأكد من ذلك: firebase_messaging/example. في حال وجدت حلاً للمشكلة أرجو مشاركته ليستفاد الآخرون وشكرا لك تعديل، أرجو مشاركة نوع نظام التشغيل الذي تعمل عليه لاختلاف المشاكل بين أندرويد و IOS مثالا اختلاف طريقة الوصول للإشعارت في أندرويد: ["notification"]["title"] في IOS: ["aps"]["alert"]["title"]. _____ حل آخر كان بسبب عدم تحديد أيقونة التطبيق في: android drawable file contains the launcher_icon وجود أيقونة استعراض الإشعار لتعمل في الواجهة الأمامية 1 اقتباس
0 Flutter Dev نشر 28 مايو 2021 الكاتب أرسل تقرير نشر 28 مايو 2021 بتاريخ 2 ساعات قال Wael Aljamal: بالنسبة لتشغيل الإشعارات في وضع تشغيل التطبيق أي بحالة Foreground Notifications يوجد طريقة مختلفة لتشغيلها. لاحظ في الشيفرة لديك، قمت بعمل دالة للتعامل مع Background Notifications وهي: FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); أمالتشغيل الإشعارت بالواجهة تاكد من اتباع التوثيق: notifications/#foreground-notifications حيث يعمل على الدالة: setForegroundNotificationPresentationOptions مثال المكتبة: firebase_messaging/example من التوثيق. مثال منشور على gitHub يمكنك تجربته و التأكد من ذلك: firebase_messaging/example. في حال وجدت حلاً للمشكلة أرجو مشاركته ليستفاد الآخرون وشكرا لك تعديل، أرجو مشاركة نوع نظام التشغيل الذي تعمل عليه لاختلاف المشاكل بين أندرويد و IOS مثالا اختلاف طريقة الوصول للإشعارت في أندرويد: ["notification"]["title"] في IOS: ["aps"]["alert"]["title"]. _____ حل آخر كان بسبب عدم تحديد أيقونة التطبيق في: android drawable file contains the launcher_icon وجود أيقونة استعراض الإشعار لتعمل في الواجهة الأمامية اهلا بيك اخي الكريم شاكر لك مساعدتك الكود اصبح كالتالي في النهاية وهو يعمل بشكل ممتاز / قمت بتجربه حتى الان على نظام الاندرويد بنسبه الى نظام IOS ساقوم بتجربته لاحقا باذن الله ولو كان فيه تعديل ساقوم بتحديثه هنا وستكمال الموضوع: Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { print("Handling a background message: ${message.messageId}"); } class ShowNotifications { static FirebaseMessaging messaging = FirebaseMessaging.instance; static void showNotification(String title, String body) async { await _demoNotification(title, body); } static Future<void> _demoNotification(String title, String body) async { var androidPlatformChannelSpecifics = AndroidNotificationDetails( 'channel_ID', 'channel name', 'channel description', importance: Importance.max, playSound: true, // sound: 'sound', // sound: true, showProgress: true, priority: Priority.high, ticker: 'test ticker'); var iOSChannelSpecifics = IOSNotificationDetails(); var platformChannelSpecifics = NotificationDetails( android: androidPlatformChannelSpecifics, iOS: iOSChannelSpecifics); await flutterLocalNotificationsPlugin .show(0, title, body, platformChannelSpecifics, payload: 'test'); } static FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); static void initialization(){ var initializationSettingsAndroid = new AndroidInitializationSettings('@mipmap/ic_launcher'); var initializationSettingsIOS = new IOSInitializationSettings(); var initializationSettings = new InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsIOS); flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: onSelectNotification); } static Future onSelectNotification(String payload) async { showDialog( // context: context, builder: (_) { return new AlertDialog( title: Text("PayLoad"), content: Text("Payload : $payload"), ); }, ); } static notification() async { await Firebase.initializeApp();messaging = FirebaseMessaging.instance; FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); NotificationSettings settings = await messaging.requestPermission( alert: true, badge: true, provisional: false, sound: true, ); if (settings.authorizationStatus == AuthorizationStatus.authorized) { print('User granted permission'); FirebaseMessaging.onMessage.listen((RemoteMessage message) { // Parse the message received PushNotification notification = PushNotification( title: message.notification?.title, body: message.notification?.body, dataTitle: message.data['title'], dataBody: message.data['body'], ); showNotification( notification.title, notification.body); }); } else { print('User declined or has not accepted permission'); } } } 2 اقتباس
السؤال
Flutter Dev
السلام عليكم ورحمة الله وبركاته
تحيه طيبه للجميع
قمت بستعمال احدث اصدار من اشعارات فايربيز في فلاتر الكود شغال اذا كنت خارج التطبيق لا توجد مشكله ولكن لو كنت داخل التطبيق لا يتم عرض الاشعارات للمستخدم
لا اعلم ما هو الجزء المتبقي في الامر
الكود كامل:
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.