72 lines
2.1 KiB
Dart
72 lines
2.1 KiB
Dart
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<void> 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
|
|
);
|
|
}
|