GCM 发送图像而不是消息
Posted
技术标签:
【中文标题】GCM 发送图像而不是消息【英文标题】:GCM send image instead of message 【发布时间】:2013-03-04 09:59:50 【问题描述】:我是一名 android 新手,我正在使用 Google GCM 发送纯文本消息。是否可以将 image 文件作为流或其他方法发送?
Java - 服务器
Android - 客户端。
Message message = new Message.Builder()
.collapseKey("1")
.timeToLive(3)
.delayWhileIdle(true)
.addData("TEST",
"Hello Android")
.build();
这里的普通消息是.addData("TEST","Hello Android")
。
【问题讨论】:
【参考方案1】:我写了两篇关于如何做到这一点的博文:
Tutorial: Using AirBop to Send Images in the Message Payload 向您展示如何通过 base64 编码图像来做到这一点。
Tutorial: Using AirBop to Push Images for BigPictureStyle Notifications 向您展示如何推送图片 url 然后下载图片。
两个教程都使用 AirBop 作为应用程序服务器,但客户端代码与其分开,可以通用。
【讨论】:
第二个链接好像坏了。 这里是更新的链接:BigPictureStyle:blog.andromo.com/2012/… 和有效负载中的图像:blog.andromo.com/2012/… 希望对您有所帮助!【参考方案2】:好的,让我们在这里考虑更大的图景。正如每个人所说,除非您的图像很小,否则使用 gcm 发送图像非常困难或不可能。另一种技术是分部分发送它,但是这很烦人,没有人想把它全部编码出来。我的建议是对服务器进行编码以存储可以发送到设备的密钥和图像凭据。然后,设备使用凭据查询服务器以获取图像下载。这种技术类似于使用推送通知设备服务器上有新数据可用的理论。它最初是用来制作一个使用尽可能少的推送的服务器,但在这种情况下它被用作发送大数据的占位符。
【讨论】:
【参考方案3】:您只能发送总大小不超过 4096 字节的键/值对。 即使您设法在字符串参数中编码图像,它也将是一个很小的图像。 另一种方法是发送一个引用图像位置的字符串,可以是您设备上的本地文件名,也可以是您在处理通知时可以访问以下载图像的 URL。
【讨论】:
【参考方案4】:您只能发送一个非常小的图像,因为数据负载限制为 4kB。您还需要以某种方式对其进行编码。
【讨论】:
以上是关于GCM 发送图像而不是消息的主要内容,如果未能解决你的问题,请参考以下文章
使用 c# .net 发送带有图像的 GCM 推送通知(适用于 android 应用程序)
PushSharp 是不是允许向 GCM for iOS 发送通知?
在客户端上使用 SERVER_API 密钥是不是可以,是不是可以在不使用 SERVER_API 密钥的情况下向设备组发送 GCM 消息?