<dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.2.3</version> </dependency>
package com.cccuu.project.utils; import cn.jpush.api.JPushClient; 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.PushPayload.Builder; import cn.jpush.api.push.model.audience.Audience; import cn.jpush.api.push.model.notification.Notification; /** * 極光推送工具類 */ public class JiGuangPushUtil { //兩個參數分別填寫你申請的masterSecret和appKey private static JPushClient jPushClient=new JPushClient("masterSecret","appKey"); /** * 通知推送 * 備註:推送方式不爲空時,推送的值也不能爲空;推送方式爲空時,推送值不作要求 * @param type 推送方式:一、「tag」標籤推送,二、「alias」別名推送 * @param value 推送的標籤或別名值 * @param alert 推送的內容 */ private static void pushNotice(String type,String value,String alert){ Builder builder= PushPayload.newBuilder(); builder.setPlatform(Platform.all());//設置接受的平臺,all爲全部平臺,包括安卓、ios、和微軟的 //設置若是用戶不在線、離線消息保存的時間 Options options=Options.sendno(); options.setTimeToLive(86400l); //設置爲86400爲保存一天,若是不設置默認也是保存一天 builder.setOptions(options); //設置推送方式 if(type.equals("alias")){ builder.setAudience(Audience.alias(value));//根據別名推送 }else if(type.equals("tag")){ builder.setAudience(Audience.tag(value));//根據標籤推送 }else{ builder.setAudience(Audience.all());//Audience設置爲all,說明採用廣播方式推送,全部用戶均可以接收到 } //設置爲採用通知的方式發送消息 builder.setNotification(Notification.alert(alert)); PushPayload pushPayload=builder.build(); try{ //進行推送,實際推送就在這一步 PushResult pushResult=jPushClient.sendPush(pushPayload); }catch(Exception e){ e.printStackTrace(); } } /** * 自定義消息推送 * 備註:推送方式不爲空時,推送的值也不能爲空;推送方式爲空時,推送值不作要求 * @param type 推送方式:一、「tag」標籤推送,二、「alias」別名推送 * @param value 推送的標籤或別名值 * @param alert 推送的內容 */ private static void pushMsg(String type, String value,String alert){ Builder builder= PushPayload.newBuilder(); builder.setPlatform(Platform.all());//設置接受的平臺 if(type.equals("alias")){ builder.setAudience(Audience.alias(value));//別名推送 }else if(type.equals("tag")){ builder.setAudience(Audience.tag(value));//標籤推送 }else{ builder.setAudience(Audience.all());//Audience設置爲all,說明採用廣播方式推送,全部用戶均可以接收到 } Message.Builder newBuilder=Message.newBuilder(); newBuilder.setMsgContent(alert);//消息內容 Message message=newBuilder.build(); builder.setMessage(message); PushPayload pushPayload=builder.build(); try{ PushResult pushResult=jPushClient.sendPush(pushPayload); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args){ //給標籤爲kefu的用戶進行消息推送 JiGuangPushUtil.pushNotice("tag","kefu","你有新的任務,請及時處理"); } }
代碼中採用的是標籤或者別名進行推送,須要在在手機APP端進行標籤和別名設置,通常是在用戶登陸以後就設置好,這樣只要用戶登陸,它的綁定別名或者標籤就能夠保存到極光服務器,而咱們推送時,指定這個別名或者標籤,就能將信息推送到對應用戶的手機上。ios
其實咱們發起推送請求,只是將信息發送到了極光服務器之上,這個信息有一個保存時限,默認一天,只要用戶使用手機APP登陸系統,極光服務器就會將信息自動推送到對應別名或者標籤的手機上,因而可知,信息並不是由咱們後臺直接推送到手機,而是經過極光服務器這個中轉站,而這正式極光的工做。數據庫
注意:這裏告知一個技巧,這個別名設置的時候,其實直接將用戶ID設置爲別名便可,既方便,又安全,不用再去想辦法生成一個惟一的串來進行標識,甚至須要在後臺數據庫中用戶表中新增字段。在標籤設置的時候,通常是將一類用戶設置爲一個標籤,而後實現給某類用戶羣發api