Firebase сообщение не получено при использовании API

Я использую Firebase API с использованием php и отправляю данные постов в формате JSON. Ответ дает мне message_id но сообщение не доставляется.

Когда я использовал Firebase Console вместо API с теми же полями, он был успешно доставлен.

Мой php код:

<?php

$json_data = '{ "data": {
"title": "Hey you got a message",
"text": "Hi from firebase api"},
"to": "/topics/all",
"priority": "high"}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Authorization:key="Used my server key here"'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

Отклик:

{"message_id":64666973642901*****}

PS: использовали звездочки, чтобы скрыть информацию.

ОБНОВИТЬ:
Сообщение доставляется, когда я установил to поле для конкретного токена. Но не работает, когда установлено topics/all,
Есть ли другой способ отправить его всем тем, кто связан с приложением, как в консоли?

4

Решение

Я наконец узнал. Сначала наше приложение не будет содержать никаких тем, и мы должны создать их явно.

Используйте следующий метод в вашем приложении, чтобы подписаться на тему

FirebaseMessaging.getInstance().subscribeToTopic("NAME OF TOPIC");

Таким образом, чтобы отправить его всем пользователям приложения, используйте вышеуказанный метод, чтобы каждый из ваших пользователей подписался на определенную тему. Я создал его с именем «все».

Теперь установите ваш to поле в запросе JSON HTTP POST для topics/NAME OF TOPIC или же topics/all в моем случае.

НОТА: При подписке на тему, новая тема будет создана автоматически, если темы с таким именем не существует.

3

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

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

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