<声明>

转载请保留本来源地址:

http://blog.csdn.net/wzg_1987/article/details/9148023

上一节讲了GCM方式实现前的一些必要准备工作,和消息接收的实现。

这一节我们来讲一下发送消息的实现。

上一节也已经讲了,GCM方式其实并不区分严格的客户端和服务端,对于开发者来说,任何一方都可以是客户端或者服务端,只要搭建的环境满足两个端的要求。也就是说,对于用户来说,可以既是发送方也可以是接收方。这样,GCM方式也就不只是可以用来推送广告了,同样也可以拿来做即时聊天。但限于GCM的种种缺陷,用来做即时聊天并不是最好的方式。(对于消息推送的各种方案对比和选择,可以浏览我的另一篇博文http://blog.csdn.net/wzg_1987/article/details/9150945

首先,你需要导入4个包,如果你已经在下载了GCM的服务包(下载方式见上一篇准备工作相关内容),在sdk安装目录/extrats/google/gcm文件夹下的gcm-server项目中,将lib文件夹里的json-simpleXX.jar,junit.jar,mockito-all-XX.jar和dist文件夹里的gcm-server.jar加到你的项目里。junit那个可以不用,它是gcm代码内部做单元测试使用到的。

然后,我们写一个main函数来执行发送一个消息:

public static void main(String[] args) {
		Sender sender = new Sender(apiKey);
		Message message = new Message.Builder().addData("mine", "test2").build();
		Result result = null;
		try {
			result = sender.send(message, deviceRegId, 5);
			
			System.out.println(result.getMessageId());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


其中,apiKey是你在谷歌api控制台页面生成的一个字符串(在上一节有讲到),用来验证消息发送方的合法性的。

deviceRegId是由客户端生成。在客户端完成注册后,调用GCMRegistrar.getRegistrationId()得到,并应该发送给服务器保存起来。

就这么简单,还可以使用send的其它重载方法,给多个注册id发送消息。

以上是服务端发送消息的简单实现。



客户端代码:http://download.csdn.net/detail/wzg_1987/5662225

服务端代码:http://download.csdn.net/detail/wzg_1987/5669419