極光推送服務端API(定時推送任務,推送到指定設備,推送到所有設備)


極光推送常用的幾個api方法總結,抽取出了utils類,利用MsgType進行業務類型區別,方便app端收到推送后進行不同處理

首先引入依賴:

<!-- 極光推送 -->
        <dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jpush-client</artifactId>
            <version>3.3.4</version>
        </dependency>
        <dependency>
            <groupId>cn.jpush.api</groupId>
            <artifactId>jiguang-common</artifactId>
            <version>1.1.1</version>
        </dependency>

 

package com.commons.utils;

import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ecp.commons.exception.APIException;
import com.ecp.commons.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Message;
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.schedule.ScheduleResult;

public class JpushUtils {
    //讀取配置中的appkey和masterSecret
protected static final Logger LOG = LoggerFactory.getLogger(JpushUtils.class); public static final String appKey = com.ecp.commons.common.PropertiesUtil.getProperty("jPush.appKey"); public static final String masterSecret = com.ecp.commons.common.PropertiesUtil.getProperty("jPush.masterSecret"); /** * * @auth Ren * @date 2018年5月2日 * @decripe 定時推送,利用DeviceSN做別名,點對點發送,同時記錄返回的msg_id * @param obj推送對象,deviceSN設備識別碼,定時的時間date,MsgType推送的業務類型(APIConstants中定義), * name推送的名稱 */ public static ScheduleResult sendSchedulePush(Object obj, String deviceSN, Date date, String MsgType, String name) { JPushClient jPushClient = new JPushClient(masterSecret, appKey); String objStr = ObjectToJson(obj); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = format.format(date); ScheduleResult result = null; PushPayload push = PushPayload.newBuilder().setPlatform(Platform.all()) .setMessage(Message.newBuilder().setMsgContent(objStr) .addExtras(Collections.singletonMap("MsgType", MsgType)).build()) .setAudience(Audience.alias(deviceSN)).build(); try { result = jPushClient.createSingleSchedule(name, time, push); LOG.info("Got result - " + result); LOG.info("send objStr - " + objStr); System.out.println(result); System.out.println(objStr); } 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()); } return result; } /** * * @auth Ren * @date 2018年5月2日 * @decripe 定時推送,推送到所有設備,同時記錄返回的msg_id * @param obj推送對象,定時的時間date,MsgType推送的業務類型(APIConstants中定義),name推送的名稱 */ public static ScheduleResult sendSchedulePushAll(Object obj, Date date, String MsgType, String name) { JPushClient jPushClient = new JPushClient(masterSecret, appKey); String objStr = ObjectToJson(obj); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = format.format(date); ScheduleResult result = null; PushPayload push = PushPayload.newBuilder().setPlatform(Platform.all()) .setMessage(Message.newBuilder().setMsgContent(objStr) .addExtras(Collections.singletonMap("MsgType", MsgType)).build()) .setAudience(Audience.all()).build(); try { result = jPushClient.createSingleSchedule(name, time, push); LOG.info("Got result - " + result); LOG.info("send objStr - " + objStr); System.out.println(result); System.out.println(objStr); } 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()); } return result; } /** * * @auth Ren * @date 2018年5月2日 * @decripe 刪除定時任務 * @param scheduleId定時任務的Id */ public static void DeleteSchedule(String scheduleId) { try { JPushClient jPushClient = new JPushClient(masterSecret, appKey); jPushClient.deleteSchedule(scheduleId); } 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()); } } /** * * @auth Ren * @date 2018年5月2日 * @decripe:把obj對象的json串推送到別名為DeviceSN的設備上,同時記錄返回的msg_id * @param obj推送對象,deviceSN設備識別碼,MsgType推送的業務類型(APIConstants中定義) */ public static PushResult SendPush(Object obj, String DeviceSN, String MsgType) { JPushClient jPushClient = new JPushClient(masterSecret, appKey); String objStr = ObjectToJson(obj); PushPayload push = PushPayload.newBuilder().setPlatform(Platform.all()) .setMessage(Message.newBuilder().setMsgContent(objStr) .addExtras(Collections.singletonMap("MsgType", MsgType)).build()) .setAudience(Audience.alias(DeviceSN)).build(); PushResult result = null; try { result = jPushClient.sendPush(push); LOG.info("Got result - " + result); LOG.info("send objStr - " + objStr); System.out.println(result); System.out.println(objStr); } catch (APIConnectionException e) { LOG.error("Connection error. Should retry later. ", e); LOG.error("Sendno: " + push.getSendno()); } 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()); LOG.error("Sendno: " + push.getSendno()); } if (result == null) { throw new APIException("與設備通話失敗,請聯系管理員處理!"); } return result; } /** * * @auth Ren * @date 2018年5月2日 * @decripe 把obj對象的json串推送到所有設備上 * @param obj推送對象,MsgType推送的業務類型(APIConstants中定義) */ public static PushResult SendPushAll(Object obj, String MsgType) { JPushClient jPushClient = new JPushClient(masterSecret, appKey); String objStr = ObjectToJson(obj); PushPayload push = PushPayload.newBuilder().setPlatform(Platform.all()) .setMessage(Message.newBuilder().setMsgContent(objStr) .addExtras(Collections.singletonMap("MsgType", MsgType)).build()) .setAudience(Audience.all()).build(); PushResult result = null; try { result = jPushClient.sendPush(push); LOG.info("Got result - " + result); LOG.info("send objStr - " + objStr); System.out.println(result); System.out.println(objStr); } catch (APIConnectionException e) { LOG.error("Connection error. Should retry later. ", e); LOG.error("Sendno: " + push.getSendno()); } 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()); LOG.error("Sendno: " + push.getSendno()); } if (result == null) { throw new APIException("推送失敗,請聯系管理員處理!"); } return result; } public static String ObjectToJson(Object o) { String json = JsonUtil.getJsonString4JavaPOJO(o, "yyyy-MM-dd HH:mm:ss"); return json; } }

 


免責聲明!

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



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