GCM отправляет изображение вместо сообщения

Я новичок в Android, и я использую Google GCM для отправки простого текстового сообщения. Возможно ли отправить файл изображения в виде потока или каким-либо другим способом?

Java-сервер

Android – клиент.

Message message = new Message.Builder() .collapseKey("1") .timeToLive(3) .delayWhileIdle(true) .addData("TEST", "Hello Android") .build(); 

Здесь простое сообщение .addData("TEST","Hello Android") .

Solutions Collecting From Web of "GCM отправляет изображение вместо сообщения"

Я написал две записи в блогах о том, как это сделать:

Учебное пособие. Использование AirBop для отправки изображений в сообщении. Полезная нагрузка, которая показывает вам, как это сделать, с помощью кодировки base64.

Учебное пособие. Использование AirBop для push-изображений для уведомлений BigPictureStyle, в котором показано, как нажимать URL-адреса изображений, а затем загружать изображение.

Оба учебника используют AirBop как сервер приложений, но код клиента отделен от него и может использоваться в целом.

Вы можете отправлять только пары ключ / значение с общим размером до 4096 байт. Даже если вам удастся закодировать изображение в строчном параметре, это будет крошечное изображение. Альтернативой является отправка строки, которая ссылается на местоположение изображения, либо имя локального файла на вашем устройстве, либо URL-адрес, к которому вы можете получить доступ, для загрузки изображения при обработке уведомления.

Вы можете отправить только очень маленькое изображение, так как полезная нагрузка данных ограничена 4 КБ. Вам также необходимо каким-то образом закодировать его.

Хорошо, давайте подумаем о более широкой картине. Поскольку все сказали, что очень сложно или невозможно отправить изображение с помощью gcm, если у вас нет крошечного изображения. Другой метод – отправить его по частям, но это раздражает, что никто не хочет все это кодировать. Мое предложение состоит в том, чтобы закодировать сервер для хранения ключей доступа и учетных данных образа, которые могут быть отправлены на устройство. Затем устройство запрашивает сервер с учетными данными для загрузки изображения. Этот метод похож на теорию использования push, чтобы уведомить устройство о том, что новые данные доступны на сервере. Первоначально он использовался для создания сервера, который использует как можно меньше push, но в этом случае он считается заполнителем для отправки больших данных.