Я использую устаревший 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}