6

我是Android新手,我正在使用Google GCM发送纯文本消息。是否可以发送图片文件作为流或通过其他方法?GCM发送图片而不是消息

Java - 服务器

Android - Client。

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

这里明确的信息是.addData("TEST","Hello Android")

回答

5

我写了一篇关于如何做到这两个博客的帖子:

Tutorial: Using AirBop to Send Images in the Message Payload它展示了如何通过将图像编码的base64做到这一点。

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

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

+0

第二个链接似乎被打破。 – secureboot 2013-11-12 23:30:44

+1

这里是更新的链接:BigPictureStyle:http://blog.andromo.com/2012/tutorial-using-airbop-to-push-images-for-bigpicturestyle-notifications/和图片在有效载荷中:http://blog.andromo .com/2012/tutorial-using-airbop-to-send-images-in-the-message-payload /我希望有帮助! – selsine 2013-11-21 19:31:07

+0

更新断开的链接 – 2015-05-31 05:20:09

2

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

16

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

1

好的,让我们来思考这里的大局。大家都说过,使用gcm发送图像是非常困难或不可能的,除非你有一个很小的图像。另一种技术是将它分成几部分,但嘿,这是令人讨厌的,没有人愿意全部编码。我的建议是编码服务器以存储可以发送到设备的密码和图像凭证。设备随后使用凭证向服务器查询以获取图像下载。这种技术类似于使用push来通知设备新服务器上有新数据的理论。它最初被用来制作一个尽可能小的推送服务器,但在这种情况下,它被用作发送大数据的占位符。