【问题标题】:GCM send image instead of messageGCM 发送图像而不是消息
【发布时间】: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")

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2021-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-16
          • 1970-01-01
          • 2015-12-18
          • 1970-01-01
          相关资源
          最近更新 更多