Java後臺伺服器實現極光推送
阿新 • • 發佈:2019-02-18
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;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.push.PushResult;
import cn.jpush.api.push.model.Options;
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.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;
/**
* java後臺極光推送方式:使用Java SDK
*/
@SuppressWarnings({ "deprecation", "restriction" })
public class JiguangPush {
private static final Logger log = LoggerFactory.getLogger(JiguangPush.class);
private static String masterSecret = "xxxxxxxxxxxxxxxxx";
private static String appKey = "xxxxxxxxxxxxxxxx";
private static final String ALERT = "推送資訊";
/**
* 極光推送
*/
public void jiguangPush(){
String alias = "123456";//宣告別名
log.info("對別名" + alias + "的使用者推送資訊");
PushResult result = push(String.valueOf(alias),ALERT);
if(result != null && result.isResultOK()){
log.info("針對別名" + alias + "的資訊推送成功!");
}else{
log.info("針對別名" + alias + "的資訊推送失敗!");
}
}
/**
* 生成極光推送物件PushPayload(採用java SDK)
* @param alias
* @param alert
* @return PushPayload
*/
public static PushPayload buildPushObject_android_ios_alias_alert(String alias,String alert){
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.addPlatformNotification(AndroidNotification.newBuilder()
.addExtra("type", "infomation")
.setAlert(alert)
.build())
.addPlatformNotification(IosNotification.newBuilder()
.addExtra("type", "infomation")
.setBadge(5)
.setSound("default")
.build())
.build())
.setOptions(Options.newBuilder()
.setApnsProduction(false)//true-推送生產環境 false-推送開發環境(測試使用引數)
.setTimeToLive(90)//訊息在JPush伺服器的失效時間(測試使用引數)
.build())
.build();
}
/**
* 極光推送方法(採用java SDK)
* @param alias
* @param alert
* @return PushResult
*/
public static PushResult push(String alias,String alert){
ClientConfig clientConfig = ClientConfig.getInstance();
JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, clientConfig);
PushPayload payload = buildPushObject_android_ios_alias_alert(alias,alert);
try {
return jpushClient.sendPush(payload);
} catch (APIConnectionException e) {
log.error("Connection error. Should retry later. ", e);
return null;
} 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());
return null;
}
}
}