今天研究了一下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