今天研究了一下JPush推送API调用,JPush即极光推送,其有免费和收费两种模式。免费的有所限制,如:推送频率,时间延迟率,成功率等,总之天下
没有免费的午餐,免费的肯定服务就不会好到哪里去。下面我们来写个小例子,模仿一下服务器推送的效果。
首先从极光推送的官网上下载demo,网址http://docs.jpush.cn/display/dev/Index,将服务器端的demo和android端的demo下载下来。接下来就进行服务器
端的代码编写,其实服务器端的demo,我们只需要搭建一个web工程,然后将他的服务器端的推送代码复制到相应的类中就行。
一:在其官网进行注册,获取APIKey,和API MasterSecret。
具体的注册步骤就不详述了,但是有一点我要吐槽一下,在注册信息的填写时,每个信息栏能不能稍微用文字说明一下,最后那个信息栏刚开始真是不知
填什么。
二:服务器端的代码编写:
1、在MyEclipse中新建一个web工程,在他的官网gitHub上,有两种方式进行工程建立,一种是maven,另外一种则是jar包的方式,因为熟悉所以就选择
后一种吧。将相应的jar包复制进web-info目录下的lib文件夹中。将实例工程中的JPushClientExample类复制到相应的包中。
2、实现serlvet监听类,新建ListenterMain类实现ServletContextListener接口,在contextInitialized调用推送方法。
public class ListenterMain implements ServletContextListener
{
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("==========");
JPushClientExample.testMain();
}
}
3、编写web.xml文件,注册监听。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.lonuery.jpush.ListenterMain</listener-class>
</listener>
</web-app>
4、编写推送方法。
//推送样例
private static void testSend() {
JPushClient jpushClient = new JPushClient(masterSecret, appKey, timeDelay, DeviceEnum.Android, false);
/*NotificationParams params = new NotificationParams();
params.setReceiverType(ReceiverTypeEnum.TAG);
params.setReceiverValue(TAG);*/
/*CustomMessageParams params = new CustomMessageParams();
params.setReceiverType(ReceiverTypeEnum.TAG);
params.setReceiverValue(TAG);*/
//MessageResult msgResult = jpushClient.sendNotification(CONTENT, params, null);//推送通知给指定的app
//MessageResult msgResult = jpushClient.sendCustomMessage(TITLE, CONTENT, params, null);//推送消息给指定的app
//MessageResult msgResult = jpushClient.sendCustomMessageAll(TITLE, CONTENT);//
MessageResult msgResult = jpushClient.sendNotificationAll(CONTENT);
LOG.debug("responseContent - " + msgResult.responseResult.responseContent);
if(msgResult!=null){
if (msgResult.isResultOK()) {
LOG.info("msgResult - " + msgResult);
LOG.info("messageId - " + msgResult.getMessageId());
} else {
if (msgResult.getErrorCode() > 0) {
//业务异常
LOG.warn("Service error - ErrorCode: "
+ msgResult.getErrorCode() + ", ErrorMessage: "
+ msgResult.getErrorMessage());
} else {
//未到达JPush
LOG.error("Other excepitons - "
+ msgResult.responseResult.exceptionString);
}
}
}else{
System.out.println("MessageResult msgResult is null");
}
System.out.println("是空空的黑色");
}
5、在这个web工程部署到Tomcat中,启动Tomcat。
三:android客户端编写
客户端无需我们重新编写,下载他的android demo,导入到Eclipse中,将AndroidManifest.xml中名为JPUSH_APPKEY改为之前注册的app的AppKey就可以了。
下面看下效果:
服务器端代码我已经上传到csdn上,欢迎下载:http://download.csdn.net/detail/zkw12358/7359315