|
|
|
|
@@ -1,6 +1,7 @@
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
import 'package:SEFER/controller/home/captin/home_captain_controller.dart';
|
|
|
|
|
import 'package:SEFER/env/env.dart';
|
|
|
|
|
import 'package:SEFER/views/widgets/mydialoug.dart';
|
|
|
|
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
@@ -19,6 +20,7 @@ import '../../views/home/Captin/orderCaptin/order_speed_request.dart';
|
|
|
|
|
import '../../views/home/Captin/orderCaptin/order_request_page.dart';
|
|
|
|
|
import '../auth/google_sign.dart';
|
|
|
|
|
import '../functions/face_detect.dart';
|
|
|
|
|
import 'access_token.dart';
|
|
|
|
|
import 'local_notification.dart';
|
|
|
|
|
|
|
|
|
|
class FirebaseMessagesController extends GetxController {
|
|
|
|
|
@@ -439,11 +441,35 @@ class FirebaseMessagesController extends GetxController {
|
|
|
|
|
// box.write(BoxName.tokens, tokens);
|
|
|
|
|
tokens = box.read(BoxName.tokens);
|
|
|
|
|
for (var i = 0; i < tokens.length; i++) {
|
|
|
|
|
http
|
|
|
|
|
.post(Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
|
|
|
|
String serviceAccountKeyJson = '''{
|
|
|
|
|
"type": "service_account",
|
|
|
|
|
"project_id": "ride-b1bd8",
|
|
|
|
|
"private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
|
|
|
|
|
"private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
|
|
|
|
|
"client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"client_id": "111210077025005706623",
|
|
|
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
|
|
|
"token_uri": "https://oauth2.googleapis.com/token",
|
|
|
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
|
|
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"universe_domain": "googleapis.com"
|
|
|
|
|
}
|
|
|
|
|
'''; // As defined above
|
|
|
|
|
|
|
|
|
|
// Initialize AccessTokenManager
|
|
|
|
|
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
|
|
|
|
|
|
|
|
|
// Obtain an OAuth 2.0 access token
|
|
|
|
|
final accessToken = await accessTokenManager.getAccessToken();
|
|
|
|
|
|
|
|
|
|
// Send the notification
|
|
|
|
|
final response = await http
|
|
|
|
|
.post(
|
|
|
|
|
Uri.parse(
|
|
|
|
|
'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
|
|
|
|
|
headers: <String, String>{
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
'Authorization': 'key=${AK.serverAPI}'
|
|
|
|
|
'Authorization': 'Bearer $accessToken',
|
|
|
|
|
},
|
|
|
|
|
body: jsonEncode({
|
|
|
|
|
'notification': <String, dynamic>{
|
|
|
|
|
@@ -494,11 +520,34 @@ class FirebaseMessagesController extends GetxController {
|
|
|
|
|
void sendNotificationToPassengerToken(
|
|
|
|
|
String title, body, token, List<String> map, String tone) async {
|
|
|
|
|
try {
|
|
|
|
|
String serviceAccountKeyJson = '''{
|
|
|
|
|
"type": "service_account",
|
|
|
|
|
"project_id": "ride-b1bd8",
|
|
|
|
|
"private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
|
|
|
|
|
"private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
|
|
|
|
|
"client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"client_id": "111210077025005706623",
|
|
|
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
|
|
|
"token_uri": "https://oauth2.googleapis.com/token",
|
|
|
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
|
|
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"universe_domain": "googleapis.com"
|
|
|
|
|
}
|
|
|
|
|
'''; // As defined above
|
|
|
|
|
|
|
|
|
|
// Initialize AccessTokenManager
|
|
|
|
|
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
|
|
|
|
|
|
|
|
|
// Obtain an OAuth 2.0 access token
|
|
|
|
|
final accessToken = await accessTokenManager.getAccessToken();
|
|
|
|
|
|
|
|
|
|
// Send the notification
|
|
|
|
|
final response = await http.post(
|
|
|
|
|
Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
|
|
|
|
Uri.parse(
|
|
|
|
|
'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
|
|
|
|
|
headers: <String, String>{
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
'Authorization': 'key=${AK.serverAPI}'
|
|
|
|
|
'Authorization': 'Bearer $accessToken',
|
|
|
|
|
},
|
|
|
|
|
body: jsonEncode({
|
|
|
|
|
'notification': <String, dynamic>{
|
|
|
|
|
@@ -528,116 +577,250 @@ class FirebaseMessagesController extends GetxController {
|
|
|
|
|
void sendNotificationToPassengerTokenCALL(
|
|
|
|
|
String title, body, token, List<String> map) async {
|
|
|
|
|
try {
|
|
|
|
|
String serviceAccountKeyJson = '''{
|
|
|
|
|
"type": "service_account",
|
|
|
|
|
"project_id": "ride-b1bd8",
|
|
|
|
|
"private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
|
|
|
|
|
"private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
|
|
|
|
|
"client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"client_id": "111210077025005706623",
|
|
|
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
|
|
|
"token_uri": "https://oauth2.googleapis.com/token",
|
|
|
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
|
|
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"universe_domain": "googleapis.com"
|
|
|
|
|
}
|
|
|
|
|
'''; // As defined above
|
|
|
|
|
|
|
|
|
|
// Initialize AccessTokenManager
|
|
|
|
|
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
|
|
|
|
|
|
|
|
|
// Obtain an OAuth 2.0 access token
|
|
|
|
|
final accessToken = await accessTokenManager.getAccessToken();
|
|
|
|
|
|
|
|
|
|
// Send the notification
|
|
|
|
|
final response = await http.post(
|
|
|
|
|
Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
|
|
|
|
Uri.parse(
|
|
|
|
|
'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
|
|
|
|
|
headers: <String, String>{
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
'Authorization': 'key=${AK.serverAPI}'
|
|
|
|
|
'Authorization': 'Bearer $accessToken',
|
|
|
|
|
},
|
|
|
|
|
body: jsonEncode({
|
|
|
|
|
'notification': <String, dynamic>{
|
|
|
|
|
'title': title,
|
|
|
|
|
'body': body,
|
|
|
|
|
'sound': 'iphone_ringtone.wav'
|
|
|
|
|
'message': {
|
|
|
|
|
'token': token,
|
|
|
|
|
'notification': {
|
|
|
|
|
'title': title,
|
|
|
|
|
'body': body,
|
|
|
|
|
},
|
|
|
|
|
'data': {
|
|
|
|
|
'passengerList': jsonEncode(map),
|
|
|
|
|
},
|
|
|
|
|
'android': {
|
|
|
|
|
'notification': {
|
|
|
|
|
'sound': 'iphone_ringtone.wav',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
'apns': {
|
|
|
|
|
'payload': {
|
|
|
|
|
'aps': {
|
|
|
|
|
'sound': 'iphone_ringtone.wav',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
'data': {
|
|
|
|
|
'passengerList': map,
|
|
|
|
|
},
|
|
|
|
|
'priority': 'high',
|
|
|
|
|
'to': token,
|
|
|
|
|
}),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
|
// Notification sent successfully
|
|
|
|
|
print(
|
|
|
|
|
'Notification sent successfully. Status code: ${response.statusCode}');
|
|
|
|
|
print('Response body: ${response.body}');
|
|
|
|
|
} else {
|
|
|
|
|
// Handle error response
|
|
|
|
|
'Failed to send notification. Status code: ${response.statusCode}';
|
|
|
|
|
print(
|
|
|
|
|
'Failed to send notification. Status code: ${response.statusCode}');
|
|
|
|
|
print('Response body: ${response.body}');
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
// Handle other exceptions
|
|
|
|
|
print('Error sending notification: $e');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void sendNotificationToAnyWithoutData(
|
|
|
|
|
String title, String body, String token, String tone) async {
|
|
|
|
|
try {
|
|
|
|
|
String serviceAccountKeyJson = '''{
|
|
|
|
|
"type": "service_account",
|
|
|
|
|
"project_id": "ride-b1bd8",
|
|
|
|
|
"private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
|
|
|
|
|
"private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
|
|
|
|
|
"client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"client_id": "111210077025005706623",
|
|
|
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
|
|
|
"token_uri": "https://oauth2.googleapis.com/token",
|
|
|
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
|
|
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"universe_domain": "googleapis.com"
|
|
|
|
|
}
|
|
|
|
|
'''; // As defined above
|
|
|
|
|
|
|
|
|
|
// Initialize AccessTokenManager
|
|
|
|
|
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
|
|
|
|
|
|
|
|
|
// Obtain an OAuth 2.0 access token
|
|
|
|
|
final accessToken = await accessTokenManager.getAccessToken();
|
|
|
|
|
|
|
|
|
|
// Send the notification
|
|
|
|
|
final response = await http.post(
|
|
|
|
|
Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
|
|
|
|
Uri.parse(
|
|
|
|
|
'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
|
|
|
|
|
headers: <String, String>{
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
'Authorization': 'key=${AK.serverAPI}'
|
|
|
|
|
'Authorization': 'Bearer $accessToken',
|
|
|
|
|
},
|
|
|
|
|
body: jsonEncode({
|
|
|
|
|
'notification': <String, dynamic>{
|
|
|
|
|
'title': title,
|
|
|
|
|
'body': body,
|
|
|
|
|
'sound': tone
|
|
|
|
|
'message': {
|
|
|
|
|
'token': token,
|
|
|
|
|
'notification': {
|
|
|
|
|
'title': title,
|
|
|
|
|
'body': body,
|
|
|
|
|
},
|
|
|
|
|
'data': {
|
|
|
|
|
'DriverList': jsonEncode([]),
|
|
|
|
|
},
|
|
|
|
|
'android': {
|
|
|
|
|
'notification': {
|
|
|
|
|
'sound': tone,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
'apns': {
|
|
|
|
|
'payload': {
|
|
|
|
|
'aps': {
|
|
|
|
|
'sound': tone,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
'data': <String, dynamic>{
|
|
|
|
|
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
|
|
|
|
|
'id': '1',
|
|
|
|
|
'status': 'done'
|
|
|
|
|
},
|
|
|
|
|
'priority': 'high',
|
|
|
|
|
'to': token,
|
|
|
|
|
}),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
|
// Notification sent successfully
|
|
|
|
|
print(
|
|
|
|
|
'Notification sent successfully. Status code: ${response.statusCode}');
|
|
|
|
|
print('Response body: ${response.body}');
|
|
|
|
|
} else {
|
|
|
|
|
// Handle error response
|
|
|
|
|
'Failed to send notification. Status code: ${response.statusCode}';
|
|
|
|
|
print(
|
|
|
|
|
'Failed to send notification. Status code: ${response.statusCode}');
|
|
|
|
|
print('Response body: ${response.body}');
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
// Handle other exceptions
|
|
|
|
|
print('Error sending notification: $e');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void sendNotificationToDriverMAP(String title, String body, String token,
|
|
|
|
|
List<String> data, String tone) async {
|
|
|
|
|
try {
|
|
|
|
|
String serviceAccountKeyJson = '''{
|
|
|
|
|
"type": "service_account",
|
|
|
|
|
"project_id": "ride-b1bd8",
|
|
|
|
|
"private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
|
|
|
|
|
"private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
|
|
|
|
|
"client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"client_id": "111210077025005706623",
|
|
|
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
|
|
|
"token_uri": "https://oauth2.googleapis.com/token",
|
|
|
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
|
|
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"universe_domain": "googleapis.com"
|
|
|
|
|
}
|
|
|
|
|
'''; // As defined above
|
|
|
|
|
|
|
|
|
|
// Initialize AccessTokenManager
|
|
|
|
|
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
|
|
|
|
|
|
|
|
|
// Obtain an OAuth 2.0 access token
|
|
|
|
|
final accessToken = await accessTokenManager.getAccessToken();
|
|
|
|
|
|
|
|
|
|
// Send the notification
|
|
|
|
|
final response = await http.post(
|
|
|
|
|
Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
|
|
|
|
Uri.parse(
|
|
|
|
|
'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
|
|
|
|
|
headers: <String, String>{
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
'Authorization': 'key=${AK.serverAPI}'
|
|
|
|
|
'Authorization': 'Bearer $accessToken',
|
|
|
|
|
},
|
|
|
|
|
body: jsonEncode({
|
|
|
|
|
'notification': <String, dynamic>{
|
|
|
|
|
'title': title,
|
|
|
|
|
'body': body,
|
|
|
|
|
// 'sound': 'tone2.wav',
|
|
|
|
|
'sound': tone
|
|
|
|
|
'message': {
|
|
|
|
|
'token': token,
|
|
|
|
|
'notification': {
|
|
|
|
|
'title': title,
|
|
|
|
|
'body': body,
|
|
|
|
|
},
|
|
|
|
|
'data': {
|
|
|
|
|
'DriverList': jsonEncode(data),
|
|
|
|
|
},
|
|
|
|
|
'android': {
|
|
|
|
|
'notification': {
|
|
|
|
|
'sound': tone,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
'apns': {
|
|
|
|
|
'payload': {
|
|
|
|
|
'aps': {
|
|
|
|
|
'sound': tone,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
'data': {
|
|
|
|
|
'DriverList': data,
|
|
|
|
|
},
|
|
|
|
|
'priority': 'high',
|
|
|
|
|
'to': token,
|
|
|
|
|
}),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
|
// Notification sent successfully
|
|
|
|
|
print(
|
|
|
|
|
'Notification sent successfully. Status code: ${response.statusCode}');
|
|
|
|
|
print('Response body: ${response.body}');
|
|
|
|
|
} else {
|
|
|
|
|
// Handle error response
|
|
|
|
|
'Failed to send notification. Status code: ${response.statusCode}';
|
|
|
|
|
print(
|
|
|
|
|
'Failed to send notification. Status code: ${response.statusCode}');
|
|
|
|
|
print('Response body: ${response.body}');
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
// Handle other exceptions
|
|
|
|
|
print('Error sending notification: $e');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void sendNotificationToDriverMapPolyline(String title, String body,
|
|
|
|
|
String token, List<String> data, String polylineJson) async {
|
|
|
|
|
try {
|
|
|
|
|
String serviceAccountKeyJson = '''{
|
|
|
|
|
"type": "service_account",
|
|
|
|
|
"project_id": "ride-b1bd8",
|
|
|
|
|
"private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249",
|
|
|
|
|
"private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n",
|
|
|
|
|
"client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"client_id": "111210077025005706623",
|
|
|
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
|
|
|
"token_uri": "https://oauth2.googleapis.com/token",
|
|
|
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
|
|
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com",
|
|
|
|
|
"universe_domain": "googleapis.com"
|
|
|
|
|
}
|
|
|
|
|
'''; // As defined above
|
|
|
|
|
|
|
|
|
|
// Initialize AccessTokenManager
|
|
|
|
|
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
|
|
|
|
|
|
|
|
|
|
// Obtain an OAuth 2.0 access token
|
|
|
|
|
final accessToken = await accessTokenManager.getAccessToken();
|
|
|
|
|
|
|
|
|
|
// Send the notification
|
|
|
|
|
final response = await http.post(
|
|
|
|
|
Uri.parse('https://fcm.googleapis.com/fcm/send'),
|
|
|
|
|
Uri.parse(
|
|
|
|
|
'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'),
|
|
|
|
|
headers: <String, String>{
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
'Authorization': 'key=${AK.serverAPI}'
|
|
|
|
|
'Authorization': 'Bearer $accessToken',
|
|
|
|
|
},
|
|
|
|
|
body: jsonEncode({
|
|
|
|
|
'notification': <String, dynamic>{
|
|
|
|
|
|