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