$request['title'], "body" => $request['body'], "image" => $request['image'] ?? '' ]; $extraNotificationData = ["message" => $request['body']]; $data = array_map('strval', array_merge($extraFields, $extraNotificationData)); $fcmNotification = [ "message" => [ "token" => $token, "notification" => $notification, "data" => $data ] ]; $headers = [ 'Authorization: Bearer ' . $this->getAccessToken(), 'Content-Type: application/json' ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $fcmUrl); 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); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fcmNotification)); if (curl_exec($ch)) { curl_close($ch); return true; } else { return false; } } public function storeNotification($request) { $response = []; try { $notification = new Notifications(); $notification->user_id = $request['user_id']; $notification->message = $request['body']; $notification->extra_fields = $request['extraNotificationData']; $notification->type = $request['type']; $notification->title = $request['title']; $notification->save(); $response['message'] = trans('auth.notification.update'); $response['status'] = 200; }catch (\Exception $ex) { Log::error($ex); $response['message'] = trans('auth.something_went_wrong'); $response['status'] = 401; } return $response; } /** * Summary of getAccessToken * @return mixed */ public function getAccessToken() { $client = new Client(); $client->setAuthConfig(public_path('/.well-known/server_key.json')); $client->addScope('https://www.googleapis.com/auth/firebase.messaging'); $token = $client->fetchAccessTokenWithAssertion(); return $token['access_token']; } }