6

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

4 回答 4

16

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

于 2013-03-15T15:53:07.243 回答
5

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

教程:使用 AirBop 在消息负载中发送图像,它向您展示了如何通过 base64 编码图像来做到这一点。

教程:使用 AirBop 推送 BigPictureStyle 通知的图像,向您展示如何推送图像 url,然后下载图像。

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

于 2013-03-15T15:58:13.180 回答
2

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

于 2013-03-15T15:52:29.813 回答
1

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

于 2015-03-07T16:58:44.103 回答