import 'package:http/http.dart' as http; import 'dart:convert'; class NotificationService { // استبدل هذا الرابط بالرابط الصحيح لملف PHP على السيرفر الخاص بك static const String _serverUrl = 'https://syria.intaleq.xyz/intaleq/fcm/send_fcm.php'; /// Sends a notification via your backend server. /// /// [target]: The device token or the topic name. /// [title]: The notification title. /// [body]: The notification body. /// [isTopic]: Set to true if the target is a topic, false if it's a device token. static Future sendNotification({ required String target, required String title, required String body, bool isTopic = false, }) async { try { final response = await http.post( Uri.parse(_serverUrl), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode({ 'target': target, 'title': title, 'body': body, 'isTopic': isTopic, }), ); if (response.statusCode == 200) { print('Notification sent successfully.'); print('Server Response: ${response.body}'); } else { print( 'Failed to send notification. Status code: ${response.statusCode}'); print('Server Error: ${response.body}'); } } catch (e) { print('An error occurred while sending notification: $e'); } } } // --- Example of how to use it --- // To send to a specific driver (using their token) void sendToSpecificDriver() { String driverToken = 'bk3RNwTe3H0:CI2k_HHwgIpoDKCI5oT...'; // The driver's FCM token NotificationService.sendNotification( target: driverToken, title: 'New Trip Request!', body: 'A passenger is waiting for you.', isTopic: false, // Important: this is a token ); } // To send to all drivers (using a topic) void sendToAllDrivers() { NotificationService.sendNotification( target: 'drivers', // The name of the topic title: 'Important Announcement', body: 'Please update your app to the latest version.', isTopic: true, // Important: this is a topic ); }