$appKey, 'secretKey' => $secretKey ]; } public function setupEnvironmentForClients(): array { $appKey = "1abab490-0768-468e-92ca-1512f8b65f90"; $secretKey = "os_v2_app_dk5ljeahnbdi5ewkcujprns7sc4xhmzg6iaujlvl3bdnayojmdoeubourulpnfjru7pf55mlgydnvdhqqmxgw2ipbvcivmn3ravacfy"; return [ 'appKey' => $appKey, 'secretKey' => $secretKey ]; } public function sendAppNotification(string $notificationTitle, string $notificationContent, string $userType) { $configuration = $userType === "client" ? $this->setupEnvironmentForClients() : $this->setupEnvironmentForServiceProvider(); $fields = [ 'app_id' => $configuration['appKey'], 'included_segments' => ['All'], 'headings' => ['en' => $notificationTitle], 'contents' => ['en' => $notificationContent], ]; $jsonFields = json_encode($fields); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications"); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json; charset=utf-8', 'Authorization: Basic ' . $configuration['secretKey'] ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonFields); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); } public function sendNotificationToSingleUser( string $notificationTitle, string $notificationContent, string $notificationId, string $userType ) { $fcmServerKey = ""; return; if (!empty($notificationId)) { return response()->json(['error' => 'User or FCM token not found.'], 404); } $fcmToken = $user->fcm_token; $notification = [ 'to' => $fcmToken, 'notification' => [ 'title' => $notificationTitle, 'body' => $notificationContent, 'sound' => 'default', ], 'data' => [ 'notification_id' => $notificationId, 'click_action' => 'FLUTTER_NOTIFICATION_CLICK' ], 'priority' => 'high' ]; $headers = [ 'Authorization: key=' . $fcmServerKey, 'Content-Type: application/json' ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // You can set this to true in production curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($notification)); $result = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if ($error) { return response()->json(['error' => $error], 500); } return response()->json(['response' => json_decode($result)], 200); } }