Как я могу подтвердить, что уведомление Firebase было действительно отправлено (FCM)?

Я разрешаю пользователям отправлять уведомления через мой веб-сайт. Уведомления работают, однако я хотел бы получить способ подтвердить, было ли уведомление отправлено (в коде), или, если это невозможно, хотя бы подтверждение того, что скручивание работает, поэтому я могу показать на своем веб-сайте сообщение о том, что это либо удалось, либо не удалось. В моем запросе поста jquery статус, кажется, всегда «успешен», даже если я предоставляю недопустимый API_ACCESS_KEY в моем php (так что он, очевидно, не отправляет уведомление, но все еще говорит об успехе). Как я могу точно знать, что уведомление было отправлено? Благодарен за любую помощь.

Вот мой запрос к сообщению в index.html:

$("#send-button").click(function(){
if($("#send").val().length == 0) {
return;
} else {
$.post("php/send-notification.php",
{
notification_message: $("#send").val()
},
function(data, status) {
alert("Data: " + data + "\nStatus: " + status);
// status seems to always be "success" even with an invalid API_ACCESS_KEY
});
}
});

Вот send-messages.php:

<?php
define( 'API_ACCESS_KEY', 'AAA....AAA' );

$msg = array
(
'body'  => $_POST['notification_message'],
'vibrate'   => 1,
'sound'     => 1,
'badge'     => 1
);

$fields = array
(
'to'            => "/topics/global",
'notification'  => $msg,
'priority'      => 'high'
);

$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'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 );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec( $ch );
curl_close( $ch );
?>

1

Решение

Ты можешь использовать curl_getinfo

проверить ответную информацию, если у вас код состояния 200, который соответствует всем ок.

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpcode == 200) {
//everything ok
}
2

Другие решения

Вы получите успешный результат в
$ result = curl_exec ($ ch);
Формат результата будет

 "multicast_id": 6581315937669460028,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "0:1495111364345221%d8a1cb15f9fd7ecd"}
]
}
1

По вопросам рекламы [email protected]