Я хочу отправлять уведомления через Firebase пользователям (в Интернете и на мобильных устройствах) по мере разработки прогрессивного веб-приложения.
Я создал проект в Firebase, следуя их руководству. Все работает хорошо, а также я протестировал отправку уведомлений с помощью Curl, и он работает на компьютерах и мобильных устройствах как правильно.
curl --header "Content-Type: application/json" \
--header "Authorization: key=<MY-FIREBASE-SERVER-KEY>" \
-d '{
"notification": {
"title": "New Message",
"body": "Hello, How are you ?",
"icon": "/images/profile_placeholder.png",
"click_action": "http://localhost:5000"},
"to": "MY-CLIENT-FCM-TOKEN"}' \
https://fcm.googleapis.com/fcm/send
Работает нормально и показывает уведомление.
Но когда я использую PHP для отправки уведомления, он отправляет уведомление, но с сообщением «этот сайт был обновлен в фоновом режиме».
Вот файл php: pwa_demo2.php
<?php
// API access key from Google API's Console
define( 'API_ACCESS_KEY', '<MY-FIREBASE-SERVER-KEY>' );
// prep the bundle
$msg = array
(
'message' => 'Hello, How are you ?',
'title' => 'New Message'
);
$fields = array
(
'to' => 'MY-CLIENT-FCM-TOKEN',
'data' => $msg
);
$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_VERIFYHOST, 0);
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
if($result === false)
{
die('Curl failed: '.curl_error($ch));
}
curl_close( $ch );
echo $result;
?>
Поэтому, пожалуйста, помогите мне, так как я застрял в этом на несколько часов …
Ваш PHP-код не отправляет то же сообщение, что и командная строка CURL.
Попробуйте напечатать вывод json_encode( $fields )
и проверьте, совпадает ли это с полезной нагрузкой, которую вы передаете CURL
командная строка с -d
вариант
Других решений пока нет …