Сообщение 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. Есть ли другой способ отправить его всем тем, кто связан с приложением, как в консоли?


person Mani Sankar    schedule 05.07.2016    source источник


Ответы (1)


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

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

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

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

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

ПРИМЕЧАНИЕ. При подписке на тему новая тема будет создана автоматически, если темы с таким названием не существует.

person Mani Sankar    schedule 05.07.2016