& quot; этот сайт был обновлен в фоновом режиме & quot; Уведомление Chrome при использовании php для облачных сообщений Firebase

Я хочу отправлять уведомления через 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;

?>

Поэтому, пожалуйста, помогите мне, так как я застрял в этом на несколько часов …

0

Решение

Ваш PHP-код не отправляет то же сообщение, что и командная строка CURL.

Попробуйте напечатать вывод json_encode( $fields ) и проверьте, совпадает ли это с полезной нагрузкой, которую вы передаете CURL командная строка с -d вариант

0

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

Других решений пока нет …

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