Edit File: NotificationTrait.php
<?php namespace App\Traits; use App\Models\Notification; use LaravelFCM\Facades\FCM; use LaravelFCM\Message\OptionsBuilder; use LaravelFCM\Message\PayloadDataBuilder; use LaravelFCM\Message\PayloadNotificationBuilder; trait NotificationTrait { public function sendNotification($user, $type, $data, $sendFcm = false) { $this->sendToDatabase($user, $type, $data); if (!$sendFcm) return; foreach ($user->devices as $device) { if ($device->show_ads) { $this->sendFcm($device->device_id, $device->device_type, $data); } } } private function sendToDatabase($user, $type, $data) { Notification::create([ 'user_id' => $user->id, 'type' => $type, 'data' => $data ]); } private function sendFcm($device_id, $device_type, $data, $setBadge = 0) { $optionBuilder = new OptionsBuilder(); $optionBuilder->setTimeToLive(60 * 20); $notificationBuilder = new PayloadNotificationBuilder($data['title']); $notificationBuilder->setBody($data['message'])->setSound('default'); // $notificationBuilder->setBody($data['message'])->setSound('default')->setBadge($setBadge)->setClickAction($action); $option = $optionBuilder->build(); $notification = $notificationBuilder->build(); $dataBuilder = new PayloadDataBuilder(); $dataBuilder->addData($data); $data = $dataBuilder->build(); if ($device_type == 'android') { $downstreamResponse = FCM::sendTo($device_id, $option, null, $data); } else { $downstreamResponse = FCM::sendTo($device_id, $option, $notification, $data); } $downstreamResponse->numberSuccess(); $downstreamResponse->numberFailure(); $downstreamResponse->numberModification(); } }
Back to File Manager