如何从我的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接口的情况下向所有订阅者发送消息?
感谢。
答案 0 :(得分:0)
看起来此功能不可用(设备到主题组的上游)。
您可以执行的一种解决方法(请参阅编辑)是向服务器发送实际的上游消息,并让服务器知道您的意图。当然,您需要将此逻辑添加到服务器代码中。在此过程中,您可以在data
中添加一个值,以表示该消息的意图是在某个主题的下游广播。
编辑:请参阅下面的@TheWonderBird评论,了解潜在的安全风险。