diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 09f770a..b084aeb 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -40,12 +40,25 @@ public function sendFCMNotification($title, $body, $tokens) $responses[] = $result; \Log::info("FCM Response for token {$fcmToken}: Sukses via Kreait. Result: " . json_encode($result)); } catch (\Kreait\Firebase\Exception\MessagingException $e) { - \Log::error("Kreait FCM Error for token {$fcmToken}: " . $e->getMessage()); + $errorMessage = $e->getMessage(); + $errors = $e->errors(); + \Log::error("Kreait FCM Error for token {$fcmToken}: " . $errorMessage); + + // Cek dari errors() bukan getMessage() + $errorCode = $errors['error']['details'][0]['errorCode'] ?? ''; + + if ($errorCode === 'UNREGISTERED' || str_contains($errorMessage, 'UNREGISTERED') || $errorCode === 'INVALID_ARGUMENT' || str_contains($errorMessage, 'invalid-argument')) { + \App\Models\User::where('fcm_token', $fcmToken)->update(['fcm_token' => null]); + \Log::warning("FCM Token dihapus karena Unregistered/Invalid: {$fcmToken}"); + continue; + } + // ERROR HANDLING TEGAS SEPERTI SEBELUMNYA dd([ 'STATUS' => 'ERROR_DITOLAK_GOOGLE', - 'FCM_ERROR' => $e->getMessage(), - 'FCM_ERROR_DETAILS' => $e->errors() + 'FCM_ERROR' => $errorMessage, + 'FCM_ERROR_DETAILS' => $errors, + 'ERROR_CODE_DETECTED' => $errorCode, ]); } } diff --git a/storage/firebase-auth.zip b/storage/firebase-auth.zip new file mode 100644 index 0000000..f6c2327 Binary files /dev/null and b/storage/firebase-auth.zip differ