first commit
This commit is contained in:
121
app/Traits/OneSignalHelper.php
Normal file
121
app/Traits/OneSignalHelper.php
Normal file
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use App\Models\Setting;
|
||||
|
||||
trait OneSignalHelper
|
||||
{
|
||||
public function setupEnvironmentForServiceProvider(): array
|
||||
{
|
||||
$appKey = "7dc8528d-f184-4902-a478-7785b795d5df";
|
||||
$secretKey = "os_v2_app_pxeffdprqreqfjdyo6c3pfov34dbi44ywtle6xewpet3244pdtkzvrzrc63gl4hmeavupgz3i6hch5wge6f7u2li4dvylyhjp5d6mna";
|
||||
return [
|
||||
'appKey' => $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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user