将上游主题消息从Android发送到GCM

时间:2015-08-15 18:33:10

标签: java android google-cloud-messaging

如何从我的Android应用程序内部发送GCM消息,以便注册到某个主题的所有其他设备都会收到该消息?

documentation中,它说这是发送上游GCM消息的方式:

    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
    String GCM_SENDER_ID = "715097164599";
    AtomicInteger msgId = new AtomicInteger();
    String id = Integer.toString(msgId.incrementAndGet());
    Bundle data = new Bundle();

    data.putString("message", "This is a GCM Topic Message!");

    try
    {
        gcm.send(GCM_SENDER_ID + "@gcm.googleapis.com", id, data);
    }
    catch(IOException e)
    {
        throw new RuntimeException(e);
    }

但请注意,没有地方可以指明此消息应该发布的主题。

我想补充一下:

data.putString("topic", "/topics/global");

但是这会将“to”字段放在消息有效负载内,这不是GCM服务器所期望的。

如何在不使用GCM的HTTP接口的情况下向所有订阅者发送消息?

感谢。

1 个答案:

答案 0 :(得分:0)

看起来此功能不可用(设备到主题组的上游)。

您可以执行的一种解决方法(请参阅编辑)是向服务器发送实际的上游消息,并让服务器知道您的意图。当然,您需要将此逻辑添加到服务器代码中。在此过程中,您可以在data中添加一个值,以表示该消息的意图是在某个主题的下游广播。

编辑:请参阅下面的@TheWonderBird评论,了解潜在的安全风险。