Update: 2026-07-23 22:14:10

This commit is contained in:
Hamza-Ayed
2026-07-23 22:14:10 +03:00
parent 695d6d7cb2
commit e7629a9eb9
8 changed files with 131 additions and 13 deletions
@@ -124,6 +124,11 @@ class FirebaseMessagesController extends GetxController {
// ... داخل معالج الإشعارات في تطبيق الراكب ...
else if (category == 'Accepted Ride') {
if (Platform.isAndroid) {
String notifTitle = 'Ride Accepted ✅'.tr;
String notifBody = 'The captain is on their way to you now.'.tr;
notificationController.showNotification(notifTitle, notifBody, 'ding');
}
if (mapCtrl != null) {
Map<String, dynamic>? driverInfoMap;
@@ -198,6 +203,11 @@ class FirebaseMessagesController extends GetxController {
update();
} else if (category == 'Trip is Begin') {
// <-- كان 'Trip is Begin'
if (Platform.isAndroid) {
String notifTitle = 'Trip Begun 🚀'.tr;
String notifBody = 'Have a safe and comfortable trip.'.tr;
notificationController.showNotification(notifTitle, notifBody, 'ding');
}
Log.print('[FCM] استقبل إشعار "TRIP_BEGUN".');
// استدعاء الحارس
mapCtrl!.processRideBegin(source: "FCM");
@@ -208,9 +218,19 @@ class FirebaseMessagesController extends GetxController {
}
update();
} else if (category == "Arrive Ride") {
if (Platform.isAndroid) {
String notifTitle = 'Driver is outside 🚖'.tr;
String notifBody = 'The captain has arrived at your location.'.tr;
notificationController.showNotification(notifTitle, notifBody, 'ding');
}
// استدعاء الحارس
mapCtrl!.processDriverArrival("FCM");
} else if (category == 'Driver Finish Trip') {
if (Platform.isAndroid) {
String notifTitle = 'Trip Finished 🏁'.tr;
String notifBody = 'Please pay and rate the driver.'.tr;
notificationController.showNotification(notifTitle, notifBody, 'ding');
}
List<dynamic> driverList = [];
// ✅ معالجة آمنة للبيانات
@@ -66,6 +66,27 @@ class NotificationController extends GetxController {
id: 0, title: title, body: message, notificationDetails: details);
Log.print('Notification shown: $title - $message');
}
// 🆕 Static method for background isolates where GetX might not be initialized
static Future<void> showBackgroundNotification(String title, String message, String tone) async {
final FlutterLocalNotificationsPlugin plugin = FlutterLocalNotificationsPlugin();
const AndroidInitializationSettings android = AndroidInitializationSettings('@mipmap/launcher_icon');
const DarwinInitializationSettings ios = DarwinInitializationSettings();
await plugin.initialize(settings: const InitializationSettings(android: android, iOS: ios));
final AndroidNotificationDetails androidDetails = AndroidNotificationDetails(
'high_importance_channel',
'High Importance Notifications',
importance: Importance.max,
priority: Priority.high,
showWhen: false,
sound: RawResourceAndroidNotificationSound(tone),
);
const DarwinNotificationDetails iosDetails = DarwinNotificationDetails(sound: 'default');
await plugin.show(id: 0, title: title, body: message, notificationDetails: NotificationDetails(android: androidDetails, iOS: iosDetails));
Log.print('Background notification shown: $title - $message');
}
// /Users/hamzaaleghwairyeen/development/App/ride 2/lib/controller/firebase/local_notification.dart
// Assume _flutterLocalNotificationsPlugin is initialized somewhere in your code
+12 -1
View File
@@ -21,7 +21,18 @@ final Map<String, String> ar_eg = {
"Stops": "محطات",
"No bus running on this route right now": "لا يوجد باص يعمل على هذا الخط الآن",
"Bus is delayed": "الباص متأخر",
"Missed the bus? Book a ride now": "فاتك الأتوبيس؟ احجز سيارة دلوقتي",
"Missed the bus? Book a ride now": "فاتك الباص؟ اطلب سيارة الآن",
// ── FCM Notifications ──
"Ride Accepted ✅": "تم قبول رحلتك ✅",
"The captain is on their way to you now.": "الكابتن في طريقه إليك الآن.",
"Driver is outside 🚖": "السائق في الخارج 🚖",
"The captain has arrived at your location.": "الكابتن وصل إلى موقعك، الرجاء التوجه إليه.",
"Trip Begun 🚀": "بدأت الرحلة 🚀",
"Have a safe and comfortable trip.": "نتمنى لك رحلة آمنة ومريحة.",
"Trip Finished 🏁": "تم إنهاء الرحلة 🏁",
"Please pay and rate the driver.": "الرجاء الدفع وتقييم السائق.",
" ')[0]).toString()}.\\n\${' I am using": " ')[0]).toString()}.\\n\${' I am using",
" I am currently located at ": " أنا حالياً في ",
" I am using": " أنا استخدم",
@@ -22,6 +22,16 @@ final Map<String, String> ar_jo = {
"No bus running on this route right now": "لا يوجد باص يعمل على هذا الخط الآن",
"Bus is delayed": "الباص متأخر",
"Missed the bus? Book a ride now": "فاتك الباص؟ اطلب سيارة الآن",
// ── FCM Notifications ──
"Ride Accepted ✅": "تم قبول رحلتك ✅",
"The captain is on their way to you now.": "الكابتن في طريقه إليك الآن.",
"Driver is outside 🚖": "السائق في الخارج 🚖",
"The captain has arrived at your location.": "الكابتن وصل إلى موقعك، الرجاء التوجه إليه.",
"Trip Begun 🚀": "بدأت الرحلة 🚀",
"Have a safe and comfortable trip.": "نتمنى لك رحلة آمنة ومريحة.",
"Trip Finished 🏁": "تم إنهاء الرحلة 🏁",
"Please pay and rate the driver.": "الرجاء الدفع وتقييم السائق.",
" ')[0]).toString()}.\\n\${' I am using": " ')[0]).toString()}.\\n\${' I am using",
" I am currently located at ": " أنا حالياً في ",
" I am using": " أنا استخدم",
+12 -1
View File
@@ -21,7 +21,18 @@ final Map<String, String> ar_sy = {
"Stops": "محطات",
"No bus running on this route right now": "لا يوجد باص يعمل على هذا الخط الآن",
"Bus is delayed": "الباص متأخر",
"Missed the bus? Book a ride now": "فاتك الباص؟ اطلب سيارة هلق",
"Missed the bus? Book a ride now": "فاتك الباص؟ اطلب سيارة الآن",
// ── FCM Notifications ──
"Ride Accepted ✅": "تم قبول رحلتك ✅",
"The captain is on their way to you now.": "الكابتن في طريقه إليك الآن.",
"Driver is outside 🚖": "السائق في الخارج 🚖",
"The captain has arrived at your location.": "الكابتن وصل إلى موقعك، الرجاء التوجه إليه.",
"Trip Begun 🚀": "بدأت الرحلة 🚀",
"Have a safe and comfortable trip.": "نتمنى لك رحلة آمنة ومريحة.",
"Trip Finished 🏁": "تم إنهاء الرحلة 🏁",
"Please pay and rate the driver.": "الرجاء الدفع وتقييم السائق.",
" ')[0]).toString()}.\\n\${' I am using": " ')[0]).toString()}.\\n\${' I am using",
" I am currently located at ": " أنا حالياً في ",
" I am using": " أنا استخدم",