Как вы отправляете уведомление Firebase на все устройства через CURL?

Я пытаюсь отправить уведомление всем пользователям приложения (на Android), по сути дублируя то, что происходит, когда уведомление отправляется через консоль администратора Firebase. Вот команда CURL, с которой я начинаю:

curl --insecure --header "Авторизация: key = AIzaSyBidmyauthkeyisfineL-6NcJxj-1JUvEM" --header "Тип содержимого: application / json" -d "{\" messages \ ": {\" title \ ": \" note -title \ "\ "тело \": \ "записная тела \"}}"https://fcm.googleapis.com/fcm/send

Вот что JSON проанализировал, чтобы вам было проще:

{
"notification":{
    "title":"note-Title",
    "body":"note-Body"
    }
}

Ответ, который возвращается, состоит из двух символов:

в

Вот и все, слово «до». (Заголовки сообщают 400) Я подозреваю, что это связано с отсутствием «в» в моем JSON. Что бы даже поставить для «к»? У меня нет определенных тем, и устройства не зарегистрировали себя ни для чего. Тем не менее, они все еще могут получать уведомления от админ-панели Firebase.

Я хочу попробовать JSON-пакет «только для данных» из-за удивительного ограничения обработки уведомлений Firebase, согласно которому, если ваше приложение находится на переднем плане, уведомление обрабатывается вашим обработчиком, но если ваше приложение находится в фоновом режиме, оно получает обрабатывается ВНУТРЕННИМ сервисом Firebase и никогда не передается вашему обработчику уведомлений. ВНИМАТЕЛЬНО это можно обойти, если вы отправляете запрос уведомления через API, но ТОЛЬКО если вы делаете это только с данными. (Который затем лишает возможности обрабатывать iOS и Android одним и тем же сообщением.) Замена «уведомления» на «данные» в любом из моих JSON не имеет никакого эффекта.

Хорошо, тогда я попытался найти решение здесь:Firebase Java Server для отправки push-уведомлений на все устройства который, как мне кажется, говорит: «Хорошо, хотя уведомления для всех возможны через консоль администратора ... это не совсем возможно через API». Временное решение: каждый клиент должен подписаться на тему, а затем отправить уведомление на эту тему. Итак, сначала код в onCreate:

FirebaseMessaging.getInstance().subscribeToTopic("allDevices");

тогда новый JSON отправляю:

{
"notification":{
    "title":"note-Title",
    "body":"note-Body"
    },
"to":"allDevices"
}

Так что теперь я получаю реальный ответ от сервера, по крайней мере. JSON ответ:

{
"multicast_id":463numbersnumbers42000,
"success":0,
"failure":1,
"canonical_ids":0,
"results":
    [
    {
    "error":"InvalidRegistration"
    }
    ]
}

И это идет с HTTP-кодом 200. Хорошо ... в соответствии сhttps://firebase.google.com/docs/cloud-messaging/http-server-ref код 200 с «InvalidRegistration» означает проблему с регистрационным токеном. Может быть? Потому что эта часть документации предназначена для сервера сообщений. Сервер уведомлений одинаковый? Неясно. В другом месте я вижу, что тема может занять несколько часов, прежде чем она станет активной. Кажется, что это сделало бы его бесполезным для создания новых чатов, так что это, кажется, тоже не очень

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

Итог: кто-нибудь знает, что JSON предоставить, чтобы отправить сообщение на все устройства, на которых запущено приложение, чтобы отразить функциональность консоли администратора?

Ответы на вопрос(6)

Ваш ответ на вопрос