java后台服務器實現極光推送


一、添加極光推送所需要的jar包,項目使用的maven,所以只需要在pom文件里添加jar包依賴

<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 推送方式:1、“tag”標簽推送,2、“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 推送方式:1、“tag”標簽推送,2、“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端進行標簽和別名設置,一般是在用戶登錄之后就設置好,這樣只要用戶登錄,它的綁定別名或者標簽就可以保存到極光服務器,而我們推送時,指定這個別名或者標簽,就能將信息推送到對應用戶的手機上。

  其實我們發起推送請求,只是將信息發送到了極光服務器之上,這個信息有一個保存時限,默認一天,只要用戶使用手機APP登錄系統,極光服務器就會將信息自動推送到對應別名或者標簽的手機上,由此可見,信息並非由我們后台直接推送到手機,而是通過極光服務器這個中轉站,而這正式極光的工作。

  注意:這里告知一個技巧,這個別名設置的時候,其實直接將用戶ID設置為別名即可,既方便,又安全,不用再去想辦法生成一個唯一的串來進行標識,甚至需要在后台數據庫中用戶表中新增字段。在標簽設置的時候,一般是將一類用戶設置為一個標簽,然后實現給某類用戶群發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM