Android消息推送之GCM方式(二)
<声明>
转载请保留本来源地址:
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
最新文章
- win32自绘按钮,使用GDI+(二)
- 使用Starling 框架时,报错Error: Error #3669: 输入大小错误, 解决方案
- dom4j操作xml
- Resharper团队协作之TODO
- Linux下串口ttyS2,ttyS3不能用的问题解决办法
- Table of Contents - MyBatis
- 1069: [SCOI2007]最大土地面积 - BZOJ
- SQL2012远程连接到SQL2008时的问题:已成功与服务器建立连接,但在登陆过程中发生错误。
- Google maps API开发(二)(转)
- poj 3287 The Trip, 2007_贪心
- mysql性能优化学习笔记(3)常见sql语句优化
- [C++]C++中的运行时类型检测
- 雷人的一幕:国外的codeproject论坛竟有人发“中文贴”.....
- zencart 后台目录产品黄色icon_yellow_on.gif 解决方案
- 如何清除jboss缓存
- php中$_FILES应用实例
- 用mapreduce 处理气象数据集
- In action ";Setting JDBC driver jar location unix [Set a variable]"; (screen ";Select a Database [Configurable banner form]";), property ";Script";:
- 【ABP】工作单元——不进行事物独立执行功能
- Azure Ubuntu18.04安装lxde桌面记录,Windows远程连接Ubuntu18.04(Linux)