Отправить Multi Notification в GCM с помощью JSON

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

{ collapse_key : my_CollapseKey, data.message : myMessage, registration_ids : ["regid1","regid2",...] } 

Но всякий раз, когда я отправляю запрос, я получаю ответ 400, в котором говорится о Bad Request, и когда я ссылаюсь на документ GCM Architectural Overview, он утверждает, что

Ответ 400 Только для запросов JSON. Указывает, что запрос не может быть проанализирован как JSON или содержит недопустимые поля (например, передача строки, в которой ожидалось число)

Вот снимок из моего веб-приложения, разработанного в ASP.Net, который я использовал для отправки запроса:

 request.ContentType = "application/json" request.Headers.Add("Authorization: key=My_Server_Key") request.Headers.Add("Sender: id=myProject_ID") Dim collapsKey = Guid.NewGuid.ToString("n") Dim data As String = "{ collapse_key : " + collapsKey + "," + " data.message : " + HttpUtility.UrlEncode(TextBox1.Text) + "}" + ", registration_ids : " + jsonids1 + "}" Dim byteArray As Byte() = Encoding.UTF8.GetBytes(data) request.ContentLength = byteArray.Length Dim dataStream As Stream = request.GetRequestStream dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() 

Любая идея, как я могу правильно проанализировать свой объект JSON и отправить несколько уведомлений? Любая помощь будет полностью оценена.

С уважением

JSON должен выглядеть так:

 { "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",...], "data" : { "Team" : "Portugal", "Score" : "3", "Player" : "Varela", }, } 

Вы забыли создать словарь для данных.

Из документации GCM:

данные
Объект JSON, поля которого представляют пары ключ-значение данных полезной нагрузки сообщения. Если присутствует, данные полезной нагрузки будут включены в намерение в качестве данных приложения, причем ключ является дополнительным именем. Например, «данные»: {«оценка»: «3×1»} приведет к дополнительному именованному замыслу, значение которого представляет собой строку 3×1. Нет ограничений на количество пар ключ / значение, хотя существует ограничение на общий размер сообщения (4kb). Значения могут быть любыми объектами JSON, но мы рекомендуем использовать строки, так как значения все равно будут преобразованы в строки в GCM-сервере. Если вы хотите включать объекты или другие нестрочные типы данных (например, целые числа или логические значения), вам необходимо выполнить преобразование в строку самостоятельно. Также обратите внимание, что ключ не может быть зарезервированным словом (от или с любым словом, начинающимся с google.). Чтобы немного усложнить ситуацию, есть некоторые зарезервированные слова (такие как collapse_key), которые технически разрешены в данных полезной нагрузки. Однако, если запрос также содержит слово, значение в запросе перезапишет значение в данных полезной нагрузки. Следовательно, использование слов, которые определены как имена полей в этой таблице, не рекомендуется, даже в тех случаях, когда они технически разрешены. Необязательный.

Intereting Posts
Как открыть файл pdf в пути пакета в android? ViewPager отключает прокрутку в определенном направлении SQLITE SUM и LIMIT, похоже, не работают вместе Сохранить base64encoded изображение на серверную базу данных как BLOB Xamarin Android – нет flowlayout? Самый простой способ узнать (программно), какая папка ресурсов используется на основе плотности / размера экрана Как создавать вкладки в приложении Android и динамически добавлять вкладки (в зависимости от соответствия пользователей) Использование биллинга In-App для покупки полной версии игры Шаги преобразования проекта C ++ opencv на компьютере с opencv android JPlayer останавливается в середине трека и начинает повторять фрагмент дорожки Как сохранить изображение во внешней галерее хранения в android Цена покупки в Android-приложении Закрыть PreferenceFragment Android: Как я могу получить размер файла FTP через FTPClient? Android-приложения, установленные как несколько значков