Уведомление Firebase Cloud Messaging приходит с пустыми данными - PullRequest
0 голосов
/ 02 мая 2020

Я использую устаревший HTTP-API FCM для отправки уведомлений в свои приложения React-Native. Когда я отправляю уведомления с заполненным блоком «data», я вижу все данные в моем приложении. Однако, когда я просто заполняю блок «уведомления», сообщение при получении его становится пустым.

Можно ли отправлять настоящие уведомления через API? Или это может быть использовано только для сообщений данных? Я изучал документацию в течение дня, и Firebase, кажется, указывает, что отправит реальное уведомление, некоторые сообщения в блоге говорят, что выходят только данные. В любом случае, я получаю сообщение о приложении во время обратного вызова, когда приложение открыто, но заголовок и текст отсутствуют. Когда приложение закрыто, я не получаю никаких уведомлений в системную панель уведомлений. Я основываю структуру на документации Firebase здесь: https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification -payload-support

Вот мой код на стороне отправителя (PHP):

$url = 'https://fcm.googleapis.com/fcm/send';
$data = array(
    "to"=>"/topics/myapp.notification",
    "notification" => array(
          "title"=>$title,
          "body"=>$body
    )
);

$options = array(
  'http' => array(
    'header'  => "Content-type: application/json\r\n".
                 "Authorization: key=" . $appInfo["server_key"] . "\r\n",
    'method'  => 'POST',
    'content' => json_encode($data)
   )
  );


$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

На стороне приложения, я слушаю сообщение, когда приложение открыто, используя:

this.messagePushListener = firebase.messaging().onMessage((message) => {
    console.log(JSON.stringify(message));
});

В полученном сообщении отсутствует заголовок и сообщение:

{"_collapseKey":"com.xxx.myapp","_data":{},"_from":"/topics/myapp.notification","_messageId":"-M6IZKep_yvL4rxxxxx","_ttl":3600}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...