Наш проект был включен в белый список для тестирования нового GCM User Notifications API, который позволяет группировать идентификаторы регистрации на один "ключ уведомления", который затем может использоваться для отправки сообщений всем устройствам, принадлежащим пользователю.
Однако, когда я отправляю запрос следующим образом:
POST /gcm/send
Authorization: key=…
Content-Type: application/json
{"notification_key": "…",
"data": {…}
}
Я получаю сообщение об ошибке:
400 Bad Request
Missing "registration_ids" field
Отправка сообщения с использованием поля registration_ids
вместо notification_key
устраняет проблему (и сообщения доставляются), но вся цель использования API-интерфейсов пользователей - использовать notification_key
вместо registration_ids
.
Из документация:
registration_ids
: [...] Запрос должен включать получателя - это может быть либо идентификатор регистрации, либо массив идентификаторов регистрации, либо уведомление. Обязательный параметр.
notification_key
: Строка, которая отображает одного пользователя на несколько идентификаторов регистрации, связанных с этим пользователем. Это позволяет стороннему серверу отправлять одно сообщение нескольким экземплярам приложений (обычно на нескольких устройствах), принадлежащими одному пользователю. Сторонний сервер может использовать message_key как цель для сообщения, а не отдельный идентификатор регистрации (или массив идентификаторов регистрации). [...] Дополнительно.
В приведенном выше примере сервер HTTP-соединений используется в https://android.googleapis.com
.
До сих пор я пытался:
- включая пустой массив для
registration_ids
, не помогает - отправка значения
notification_key
в качестве идентификатора регистрации в полеregistration_ids
, не работает либо - настройка заголовка
project_id
на наш номер проекта (как требуется при созданииnotification_key
), до сих пор не повезло - используя CCS (XMPP) вместо HTTP для связи с сервером API GCM, но, к сожалению, IP заблокирован в Google App Engine
- включая как
notification_key
, так иnotification_key_name
в запросе, не помогает
ОБНОВЛЕНИЕ: В соответствии с предложенным здесь, я также попытался отправить полезную нагрузку на /gcm/notification
, "operation": "send"
, включенное в полезную нагрузку запроса JSON. Все равно никакой помощи. Теперь я получаю:
{"error":"Missing \"registration_ids\" field"}
То же самое, только на этот раз он отправляется обратно в JSON-кодировку.