GCM发送图像而不是消息

时间:2013-03-15 15:49:00

标签: android servlets push-notification http-post google-cloud-messaging

我是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")

4 个答案:

答案 0 :(得分:16)

您只能发送总大小最多为4096字节的键/值对。 即使您设法在字符串参数中编码图像,它也会是一个很小的图像。 另一种方法是发送一个引用图像位置的字符串,可以是设备上的本地文件名,也可以是处理通知时可以访问以下载图像的URL。

答案 1 :(得分:5)

我写了两篇关于如何做到这一点的博客文章:

Tutorial: Using AirBop to Send Images in the Message Payload向您展示如何通过base64编码图像来实现。

Tutorial: Using AirBop to Push Images for BigPictureStyle Notifications向您展示如何推送图片网址,然后下载图片。

两个教程都使用AirBop作为应用程序服务器,但客户端代码与此分开,可以一般使用。

答案 2 :(得分:2)

您只能发送非常小的图像,因为数据有效负载限制为4kB。你还需要以某种方式对其进行编码。

答案 3 :(得分:1)

好的,让我们考虑一下这里的大局。正如大家所说,除非你的图像很小,否则很难或不可能使用gcm发送图像。另一种技术是将其部分发送,但是嘿,这很烦人,没有人想要全部编码。我的建议是对服务器进行编码,以存储可以发送到设备的密钥和图像凭据。然后,设备使用凭据查询服务器以获取图像下载。此技术类似于使用push来通知设备服务器上有新数据可用的理论。它最初用于制作尽可能少使用推送的服务器,但在这种情况下,它被认为是用于发送大数据的占位符。