標籤:%s push post div profile mod void hal depend
極光推送最近老抽風,然後推送方案又一次改變,這次給大家帶來的是阿里的Alibaba Cloud Mobile Push服務端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; }}
阿里Alibaba Cloud Mobile Push服務端API