極光推送最近老抽風,然后推送方案又一次改變,這次給大家帶來的是阿里的移動推送服務端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; } }