極光推送工具

極光推送的,推送工具類

package com.letui.utils;/**
 * @Author: zyh
 * @Description: 描述
 * @CreateDate: 2020/4/24
 * @UpdateDate: 2020/4/24
 * @UpdateRemark: 修改內容
 * @Version: 1.0
 */
import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.device.TagListResult;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.*;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.audience.AudienceTarget;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

import java.util.List;

/**
 * @author: 雲
 * @date: 2020/4/24 9:52
 * @version: 1.0
 */
public class JiGuangAppPush {
    private static final String MASTER_SECRET = "*****";
    private static final String APP_KEY = "*****";
    private static JPushClient jpushClient = null;


    public static final String TITLE = "Test from API example";
    public static final String ALERT = "Test from API Example - alert";
    public static final String MSG_CONTENT = "Test from API Example - msgContent";


    private JiGuangAppPush() {
        jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, ClientConfig.getInstance());
    }


    private static JPushClient getInstance() {
        if (jpushClient == null) {
            new JiGuangAppPush();
        }
        return jpushClient;
    }

    // 獲取當前在線的tags
    public static List<String> getTags() throws APIConnectionException, APIRequestException {
        TagListResult res = getInstance().getTagList();

        if (res == null) {
            return null;
        }
        return res.tags;
    }

    // 推送全部人
    public static PushResult pushAll(String title) throws APIConnectionException, APIRequestException {
        return getInstance().sendPush(buildPushObject_all_all_alert(title));
    }


    // 給某些人推送消息
    public static PushResult push(List<String> tags, String alert, Long id) throws APIConnectionException, APIRequestException {
        List<String> list = JiGuangAppPush.getTags();
        if (list == null) {
            return null;
        }
        tags.retainAll(list);
        return getInstance().sendPush(buildPushObjectAllTags(tags, alert, id));
    }

    /**
     * 給某個人推送內容爲alert的通知
     *
     * @param alert
     * @param tags
     * @return
     */
    public static PushResult pushOne(String alert, String tags) throws APIConnectionException, APIRequestException {
        List<String> list = JiGuangAppPush.getTags();
        if (list == null) {
            return null;
        }
        if (list.contains(tags)) {
            return getInstance().sendPush(buildPushObjectTags(alert, tags));
        }
        return null;
    }


    /**
     * 推送某個tags
     *
     * @param alert
     * @return
     */
    public static PushPayload buildPushObjectTags(String alert, String tags) {
        return PushPayload.newBuilder()
                .setPlatform(Platform.all())
                .setAudience(Audience.tag(tags))      // 設置tag
                .setNotification(Notification.newBuilder()// 設置標題
                        .setAlert(alert)
                        .build())
                .setMessage(Message.newBuilder()
                        .setMsgContent("小牛邦")
//                        .addExtra("id", id)
                        .build())
                .build();
    }


    /**
     * 推送所有符合條件的tags
     *
     * @param tags
     * @param alert
     * @return
     */
    public static PushPayload buildPushObjectAllTags(List<String> tags, String alert, Long id) {

        return PushPayload.newBuilder()
                .setPlatform(Platform.all())
                .setAudience(Audience.tag(tags))      // 設置tag
                .setNotification(Notification.newBuilder()// 設置標題
                        .setAlert(alert)
                        .build())
                .setMessage(Message.newBuilder()
                        .setMsgContent("愛臨時")
                        .addExtra("id", id)
                        .addExtra("type", 1)
                        .build())
                .build();
    }


    /**
     * 快捷地構建推送對象:所有平臺,所有設備,內容爲 ALERT 的通知。
     *
     * @return
     */
    public static PushPayload buildPushObject_all_all_alert(String alert) {
        return PushPayload.alertAll(alert);
    }


    /**
     * 構建推送對象:所有平臺,推送目標是別名爲 "alias1",通知內容爲 ALERT。
     *
     * @return
     */
    public static PushPayload buildPushObject_all_alias_alert() {
        return PushPayload.newBuilder()
                .setPlatform(Platform.all())
                .setAudience(Audience.alias("alias1"))
                .setNotification(Notification.alert(ALERT))
                .build();
    }


    /**
     * 構建推送對象:平臺是 Android,目標是 tag 爲 "tag1" 的設備,內容是 Android 通知 ALERT,並且標題爲 TITLE。
     *
     * @return
     */
    public static PushPayload buildPushObject_android_tag_alertWithTitle() {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android())
                .setAudience(Audience.tag("1"))
                .setNotification(Notification.android(ALERT, TITLE, null))
                .build();
    }


    /**
     * 構建推送對象:平臺是 iOS,推送目標是 "tag1", "tag_all" 的交集,推送內容同時包括通知與消息 - 通知信息是 ALERT,
     * 角標數字爲 5,通知聲音爲 "happy",並且附加字段 from = "JPush";消息內容是 MSG_CONTENT。
     * 通知是 APNs 推送通道的,消息是 JPush 應用內消息通道的。
     * APNs 的推送環境是“生產”(如果不顯式設置的話,Library 會默認指定爲開發)
     *
     * @return
     */
    public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {
        return PushPayload.newBuilder()
                .setPlatform(Platform.ios())
                .setAudience(Audience.tag_and("tag1", "tag11"))
                .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();
    }


    /**
     * 構建推送對象:平臺是 Andorid 與 iOS,推送目標是 ("tag1" 與 "tag2" 的並集)交("alias1" 與 "alias2" 的並集),
     * 推送內容是 - 內容爲 MSG_CONTENT 的消息,並且附加字段 from = JPush。
     *
     * @return
     */
    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();
    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章