diff --git a/backend/Admin/marketing/trigger_campaign.php b/backend/Admin/marketing/trigger_campaign.php index b4c5276f..68501aef 100644 --- a/backend/Admin/marketing/trigger_campaign.php +++ b/backend/Admin/marketing/trigger_campaign.php @@ -133,7 +133,7 @@ try { $spamCount = intval($stmtSpam->fetchColumn()); // Check if passenger has active FCM token - $sqlToken = "SELECT token FROM tokens WHERE passengerID = :pid LIMIT 1"; + $sqlToken = "SELECT token FROM tokens WHERE passengerID = :pid ORDER BY id DESC LIMIT 1"; $stmtToken = $con->prepare($sqlToken); $stmtToken->execute([':pid' => $passengerId]); $fcmToken = $stmtToken->fetchColumn(); diff --git a/backend/core/Services/FcmService.php b/backend/core/Services/FcmService.php index c178a807..5ac0740d 100644 --- a/backend/core/Services/FcmService.php +++ b/backend/core/Services/FcmService.php @@ -59,10 +59,6 @@ class FcmService 'token' => $token, 'data' => $processedData, 'android' => ['priority' => 'HIGH'], - 'apns' => [ - 'headers' => ['apns-priority' => '10', 'apns-push-type' => 'background'], - 'payload' => ['aps' => ['content-available' => 1]], - ], ], ]; @@ -71,6 +67,25 @@ class FcmService 'title' => $title, 'body' => $body, ]; + $payload['message']['apns'] = [ + 'payload' => [ + 'aps' => [ + 'sound' => $tone === 'ding' ? 'default' : $tone + ] + ] + ]; + } else { + $payload['message']['apns'] = [ + 'headers' => [ + 'apns-priority' => '5', + 'apns-push-type' => 'background' + ], + 'payload' => [ + 'aps' => [ + 'content-available' => 1 + ] + ] + ]; } $ch = curl_init($fcmUrl); @@ -94,6 +109,8 @@ class FcmService $curlErr = curl_errno($ch); curl_close($ch); + error_log("[FCM_DEBUG] Token: " . substr($token, 0, 10) . "... Payload: " . json_encode($payload, JSON_UNESCAPED_UNICODE) . " | Result: $httpCode - $result"); + if ($curlErr) { return ['status' => 'error', 'message' => 'CURL error']; }