我按照“入门”页面的描述将GCM实施到我的应用程序,并使用gcm.jar和gcm-server.jar帮助程序库以便于实现。
但我认为我误解了GCM的一些内容; beucase我无法达到我想要的目的。
我希望寄存器设备的另一个关键信息不仅仅是registerId。 例如,这是天气应用程序,用户可能想要获得关于一个或多个城市的通知。为实现这一目标,服务器需要城市名称或邮政编码才能从其他来源获取天气信息,并在相关城市发生任何变化时推回已注册的设备。
我在用户声明收到有关特定事件(例如城市)的通知时注册设备。
但是GCMRegistrar.register
方法只接受2个参数,一个用于上下文,一个用于senderID。
如何向应用服务器发送其他参数?
编辑:我实现了GCMIntentService和onRegistered方法。我可以通过直接呼叫服务器从这里发送附加信息;但是当调用onRegistered方法时,我会丢失额外的信息。
答案 0 :(得分:2)
没有什么可以阻止您实施自己的代码来向您的应用服务器发送信息。我用我的应用程序做到了这一点。在GCMIntentService类中,您创建了插入代码,以便在
中执行此操作protected void onRegistered(Context context,String regId)
方法。您会注意到谷歌的GCM库实际上并没有像使用C2DM那样进行任何第三方应用服务器注册。如果您愿意,可以选择使用谷歌应用引擎。