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
Android消息推送之GCM方式(二)的更多相关文章
- Android消息推送之GCM方式(一)
<声明> 转载请保留本来源地址: http://blog.csdn.net/wzg_1987/article/details/9140371 首先,你需要使用一个谷歌账号登录谷歌Api控制 ...
- 使用GCM服务(Google Cloud Messaging)实现Android消息推送
最近在网上查了关于很多Android消息推送的资料,其中主要有四种方法. 1) 使用GCM服务(Google Cloud Messaging) 2) 使用XMPP协议(Openfire + Spark ...
- Android消息推送(二)--基于MQTT协议实现的推送功能
国内的Android设备,不能稳定的使用Google GCM(Google Cloud Messageing)消息推送服务. 1. 国内的Android设备,基本上从操作系统底层开始就去掉了Googl ...
- Android消息推送完美解决方案全析
推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来和大家共同探讨一种Android消息推 ...
- Android消息推送完美方案[转]
转自 Android消息推送完美方案 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来 ...
- Android消息推送完美方案
转自:http://bbs.hiapk.com/thread-4652657-1-1.html 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原 ...
- android 消息推送
android 消息推送 极光推送百度云推送(语音)友盟消息推送
- Android消息推送——JPush极光推送
刚看了一篇关于Android消息推送评测总结的博客http://www.cnblogs.com/logan/p/4514635.html: 自己也对原学过的JPush极光进行一下小结,方便后续工作使用 ...
- Android消息推送的服务端
2.Android消息推送 MQTT服务器采用mosquito http://mosquitto.org/ PHP管理包采用phpmqttclient:https://github.com/toku ...
随机推荐
- 一张图片入门Python
一张图片入门Python 之前已有别人整理了,一张图入门Python,快速了解各种基本的语法. 英文版: 图 5.1. Quick Python Script Explanation 中文版: 图 5 ...
- 2014第6周五JS调试
今天才发现chrome调试前端尤其是JS真是很方便,难怪之前公司几个前端高手都用chrome的开发者工具来调试.把今天知道的chrome调试方法收集整理一下,在今后的开发调试中都可能会用到: Prof ...
- (续)顺序表之单循环链表(C语言实现)
单循环链表和单链表的唯一区别在于单循环链表的最后一个节点的指针域指向第一个节点, 使得整个链表形成一个环. C实现代码如下: #include<stdio.h> typedef struc ...
- #include <boost/function.hpp>
为atoi取别名fun,fun实质上是函数指针 #include <iostream> #include <boost/function.hpp> void main() { ...
- Win8开发疑问与解答
疑问:怎样获取开发者许可证 打开VS2012时,怎么在没有取得开发者许可证之前,屏蔽/跳过弹出的窗体“获取Windows8开发者许可证 你需要具有开发者许可证才能开发适用于......” 打开Blen ...
- hadoop结构出现后format变态
14/07/10 18:50:47 FATAL conf.Configuration: error parsing conf file: com.sun.org ...
- Iframe和父窗口互调方法的集合
1.子iframe里调用父级的方法:window.parent.document. 2.父级里调用子集iframe:window.frames["iframe_text"].d ...
- Reset Password Functionality FAQ
In this Document Purpose Questions and Answers How can users request a password reset? How d ...
- *++p和*p++的区别
*p++:先是用*p这个值,然后再使p的地址加1. #include<iostream>using namespace std;int main(){ char s[81]=&quo ...
- BZOJ 3233: [Ahoi2013]找硬币( dp )
dp(x)表示最大面值为x时需要的最少硬币数. 枚举x的质因数p, dp(x) = min( dp(x/p) - (p-1) * sigma[a[i]/x] ). ----------------- ...