一、 准備工作
1. 登錄極光推送官網https://www.jpush.cn/,注冊賬號並登錄
2. 創建應用
創建應用過程,詳見百度經驗:http://jingyan.baidu.com/article/4f34706ecf2664e387b56d98.html
3. 獲取appkey和masterSecret
二、 服務端開發
1. 創建java web工程
2. 在WEB-INF路徑下的lib路徑下,導入相關jar包,相關jar包可以在極光推送官網獲取。
3. 到官網下載java服務器sdk壓縮包。
4. 將官網例子中\jpush-api-java-client-3.2.9\src\main\java路徑下cn文件夾整個拖入到src中。
注1:這是一種折中方案,我看大神們基本沒有導入這個包,也正常使用了,但是我如果不這樣做,就會報各種import錯誤,也是無奈之舉
注2:這一過程可能會報錯,不要緊張,一個個的點進去看,應該都是告訴你@overRide標簽有問題,刪掉就好
5. 創建一個新的包com.weiwend.jdpush,創建class文件Jdpush.java
- package com.weiwend.jdpush;
-
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- import cn.jpush.api.JPushClient;
- import cn.jpush.api.common.resp.APIConnectionException;
- import cn.jpush.api.common.resp.APIRequestException;
- import cn.jpush.api.push.PushResult;
- import cn.jpush.api.push.model.Message;
- import cn.jpush.api.push.model.Options;
- import cn.jpush.api.push.model.Platform;
- import cn.jpush.api.push.model.PushPayload;
- import cn.jpush.api.push.model.audience.Audience;
- import cn.jpush.api.push.model.audience.AudienceTarget;
- import cn.jpush.api.push.model.notification.AndroidNotification;
- import cn.jpush.api.push.model.notification.IosNotification;
- import cn.jpush.api.push.model.notification.Notification;
-
- public class Jdpush {
- protected static final Logger LOG = LoggerFactory.getLogger(Jdpush.class);
-
-
-
- public static final String TITLE = "申通快遞";
- public static final String ALERT = "祝大家新春快樂";
- public static final String MSG_CONTENT = "申通快遞祝新老客戶新春快樂";
- public static final String REGISTRATION_ID = "0900e8d85ef";
- public static final String TAG = "tag_api";
-
- public static JPushClient jpushClient=null;
-
- public static void testSendPush(String appKey ,String masterSecret) {
-
-
-
- jpushClient = new JPushClient(masterSecret, appKey, 3);
-
-
-
-
-
-
-
-
- PushPayload payload=buildPushObject_all_alias_alert();
-
-
- try {
- System.out.println(payload.toString());
- PushResult result = jpushClient.sendPush(payload);
- System.out.println(result+"................................");
-
- LOG.info("Got result - " + result);
-
- } catch (APIConnectionException e) {
- LOG.error("Connection error. Should retry later. ", e);
-
- } catch (APIRequestException e) {
- LOG.error("Error response from JPush server. Should review and fix it. ", e);
- LOG.info("HTTP Status: " + e.getStatus());
- LOG.info("Error Code: " + e.getErrorCode());
- LOG.info("Error Message: " + e.getErrorMessage());
- LOG.info("Msg ID: " + e.getMsgId());
- }
- }
-
- public static PushPayload buildPushObject_all_all_alert() {
- return PushPayload.alertAll(ALERT);
- }
-
- public static PushPayload buildPushObject_all_alias_alert() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.all())
- .setAudience(Audience.all())
- .setNotification(Notification.alert(ALERT))
- .build();
- }
-
- public static PushPayload buildPushObject_android_tag_alertWithTitle() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.android())
- .setAudience(Audience.all())
- .setNotification(Notification.android(ALERT, TITLE, null))
- .build();
- }
-
- public static PushPayload buildPushObject_android_and_ios() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.android_ios())
- .setAudience(Audience.tag("tag1"))
- .setNotification(Notification.newBuilder()
- .setAlert("alert content")
- .addPlatformNotification(AndroidNotification.newBuilder()
- .setTitle("Android Title").build())
- .addPlatformNotification(IosNotification.newBuilder()
- .incrBadge(1)
- .addExtra("extra_key", "extra_value").build())
- .build())
- .build();
- }
-
- public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.ios())
- .setAudience(Audience.tag_and("tag1", "tag_all"))
- .setNotification(Notification.newBuilder()
- .addPlatformNotification(IosNotification.newBuilder()
- .setAlert(ALERT)
- .setBadge(5)
- .setSound("happy")
- .addExtra("from", "JPush")
- .build())
- .build())
- .setMessage(Message.content(MSG_CONTENT))
- .setOptions(Options.newBuilder()
- .setApnsProduction(true)
- .build())
- .build();
- }
-
- public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.android_ios())
- .setAudience(Audience.newBuilder()
- .addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))
- .addAudienceTarget(AudienceTarget.alias("alias1", "alias2"))
- .build())
- .setMessage(Message.newBuilder()
- .setMsgContent(MSG_CONTENT)
- .addExtra("from", "JPush")
- .build())
- .build();
- }
- }
6. 創建一個新的包com.weiwend.jdpush.servlet,創建class文件tuisong.java
package com.weiwend.jdpush.servlet; import Java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.org.apache.xml.internal.serializer.utils.Utils; import com.weiwend.jdpush.Jdpush; import cn.jpush.*; /** * Servlet implementation class tuisong */ public class tuisong extends HttpServlet { private static final long serialVersionUID = 1L; private static final String appKey ="84cf5ee2099c654aa03a5d70"; private static final String masterSecret = "7cf23f25a41806d5fd29e3c5"; public tuisong() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Jdpush.testSendPush(appKey,masterSecret); System.out.println("sucess"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
7. 修改web.xml,增加servlet描述
<servlet> <servlet-name >tuisong</servlet-name> <servlet-class>com.weiwend.jdpush.servlet.tuisong</servlet-class> </servlet> <servlet-mapping> <servlet-name >tuisong</servlet-name> <url-pattern>/tuisong</url-pattern> </servlet-mapping>
8. 修改index.jsp,增加servlet調用
<form action="tuisong" method="get"> <input type="text" name="username"></input> <input type="password" name="userpassword"></input> <br><input type="submit" value="denglu">
9. 將項目部署到tomcat下,啟動tomcat
10. 通過網頁進行訪問,觸發servlet
點擊登錄按鈕,觸發servlet。界面樣式就不改了,我相信除了處女座的程序員,沒有人會在意這個。
11. 在console中查看推送結果。
log4j:WARN No appenders could be found for logger (cn.jpush.api.common.connection.NativeHttpClient). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. {"platform":"all","audience":"all","notification":{"alert":"祝大家新春快樂"},"options":{"sendno":34919015,"apns_production":false}} {"msg_id":3270259240,"sendno":34919015}................................ sucess
發送失敗的原因是因為我們的應用並沒有綁定某一個具體的客戶端應用,所以推送失敗了。但是本地服務器與推送服務器之間的通訊是完好的。