阿里移動推送服務端API


極光推送最近老抽風,然后推送方案又一次改變,這次給大家帶來的是阿里的移動推送服務端api:

 

首先是引入的依賴

<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-push</artifactId>
            <version>2.2.4</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>2.4.2</version>
        </dependency>

然后老規矩,抽取之后的代碼untils

 

package com.commons.utils;

import java.util.Date;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.push.model.v20150827.CancelPushRequest;
import com.aliyuncs.push.model.v20150827.CancelPushResponse;
import com.aliyuncs.push.model.v20150827.PushRequest;
import com.aliyuncs.push.model.v20150827.PushResponse;
import com.aliyuncs.utils.ParameterHelper;
import com.ecp.commons.api.APIConstants;
import com.ecp.commons.utils.JsonUtil;

public class JpushUtils {
    public static final String appKey = com.ecp.commons.common.PropertiesUtil.getProperty("Push.appKey");
    public static final String AppSecret = com.ecp.commons.common.PropertiesUtil.getProperty("Push.AppSecret");
    public static final String accessKeyId = com.ecp.commons.common.PropertiesUtil.getProperty("Push.accessKeyId");
    public static final String accesssecret = com.ecp.commons.common.PropertiesUtil.getProperty("Push.secret");

    /**
     * 
     * @auth Ren
     * @date 2018年5月2日
     * @decripe:把obj對象的json串推送到別名為DeviceSN的設備上,同時記錄返回的msg_id
     * @param obj推送對象,deviceSN設備識別碼,MsgType推送的業務類型(APIConstants中定義)
     */
    public static PushResponse SendPush(Object obj, String DeviceSN, String MsgType) throws Exception {
        PushRequest pushRequest = new PushRequest();
        pushRequest.setMethod(MethodType.POST);
        pushRequest.setAppKey(Long.valueOf(appKey));
        pushRequest.setDeviceType(1);
        pushRequest.setTarget("alias");
        pushRequest.setTargetValue(DeviceSN);
        pushRequest.setType(0); // 0:表示消息(默認為0), 1:表示通知
        pushRequest.setTitle(MsgType); // 消息的標題
        pushRequest.setBody(ObjectToJson(obj)); // 消息的內容
        IClientProfile profile = DefaultProfile.getProfile(APIConstants.REGION_HANGZHOU, accessKeyId, accesssecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        PushResponse pushResponse = client.getAcsResponse(pushRequest);
        System.out.printf("RequestId: %s, ResponseId: %s\n", pushResponse.getRequestId(), pushResponse.getResponseId());
        return pushResponse;

    }
    /**
     * 
     * @auth Ren
     * @date 2018年6月6日
     * @decripe:直接推所有
     * @param obj推送對象,MsgType推送的業務類型(APIConstants中定義)
     */
    public static PushResponse SendPush(Object obj,String MsgType) throws Exception {
        PushRequest pushRequest = new PushRequest();
        pushRequest.setMethod(MethodType.POST);
        pushRequest.setAppKey(Long.valueOf(appKey));
        pushRequest.setDeviceType(1);
        pushRequest.setTarget("all");
        pushRequest.setTargetValue("all");
        pushRequest.setType(0); // 0:表示消息(默認為0), 1:表示通知
        pushRequest.setTitle(MsgType); // 消息的標題
        pushRequest.setBody(ObjectToJson(obj)); // 消息的內容
        IClientProfile profile = DefaultProfile.getProfile(APIConstants.REGION_HANGZHOU, accessKeyId, accesssecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        PushResponse pushResponse = client.getAcsResponse(pushRequest);
        System.out.printf("RequestId: %s, ResponseId: %s\n", pushResponse.getRequestId(), pushResponse.getResponseId());
        return pushResponse;

    }
    /**
     * 
     * @auth Ren
     * @date 2018年6月6日
     * @decripe:定時推所有
     * @param obj推送對象,MsgType推送的業務類型(APIConstants中定義)
     */
    public static PushResponse sendSchedulePushAll(Object obj, Date pushtime, String MsgType) throws Exception {
        IClientProfile profile = DefaultProfile.getProfile(APIConstants.REGION_HANGZHOU, accessKeyId, accesssecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        PushRequest pushRequest = new PushRequest();
        pushRequest.setMethod(MethodType.POST);
        pushRequest.setAppKey(Long.valueOf(appKey));
        pushRequest.setDeviceType(1);
        pushRequest.setTarget("all");
        pushRequest.setTargetValue("all");
        pushRequest.setType(0); // 0:表示消息(默認為0), 1:表示通知
        pushRequest.setTitle(MsgType); // 消息的標題
        pushRequest.setBody(ObjectToJson(obj)); // 消息的內容
        String pushTime = ParameterHelper.getISO8601Time(pushtime);
        pushRequest.setPushTime(pushTime);
        PushResponse pushResponse = client.getAcsResponse(pushRequest);
        System.out.printf("RequestId: %s, ResponseId: %s\n", pushResponse.getRequestId(), pushResponse.getResponseId());
        return pushResponse;
        
    }
    /**
     * 
     * @auth Ren
     * @date 2018年6月6日 
     * @decripe 定時推指定設備
     */
    public static PushResponse sendSchedulePush(Object obj, String DeviceSN, Date pushtime, String MsgType) throws Exception{
        IClientProfile profile = DefaultProfile.getProfile(APIConstants.REGION_HANGZHOU, accessKeyId, accesssecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        PushRequest pushRequest = new PushRequest();
        pushRequest.setMethod(MethodType.POST);
        pushRequest.setAppKey(Long.valueOf(appKey));
        pushRequest.setDeviceType(1);
        pushRequest.setTarget("alias");
        pushRequest.setTargetValue(DeviceSN);
        pushRequest.setType(0); // 0:表示消息(默認為0), 1:表示通知
        pushRequest.setTitle(MsgType); // 消息的標題
        pushRequest.setBody(ObjectToJson(obj)); // 消息的內容
        String pushTime = ParameterHelper.getISO8601Time(pushtime);
        pushRequest.setPushTime(pushTime);
        PushResponse pushResponse = client.getAcsResponse(pushRequest);
        System.out.printf("RequestId: %s, ResponseId: %s\n", pushResponse.getRequestId(), pushResponse.getResponseId());
        return pushResponse;
    }
    
      /**
     * 取消定時推送
     * <p>
     * //
     */

    public void testCancelPush(String ResponseId) throws Exception {
        CancelPushRequest request = new CancelPushRequest();
        request.setAppKey(Long.valueOf(appKey));
        request.setMessageId(ResponseId);//推送時返回的ResponseId。
        IClientProfile profile = DefaultProfile.getProfile(APIConstants.REGION_HANGZHOU, accessKeyId, accesssecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        CancelPushResponse response = client.getAcsResponse(request);
        System.out.println(response.getRequestId());

    }
    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