public class XiaomiPush {
// 1.小米推送(我只推送Android且只應用regId發起推送,所以下面只有推送Android的代碼
private static final Log log = LogFactory.getLog(XiaomiPush.class);
private Message buildMessageForAndroid(String title, String description, String messagePayload,
Integer passThrough, Integer actionType, String actionUrl, Integer notifyType, String extendContent) {
Message message;
Message.Builder builder = new Message.Builder()
.title(title)//標題(注意16字真言限制長度,這段畫上重點考)
.description(description)//描述(注意128限制長度,這段畫上重點考,這個描述,我理解為副標題,而且在手機客戶端呈現的也是標題+描述,內容不會自己顯示出來,如果只是為了通知用戶信息,我們可以將信息內容放在此處,顯示效果比較明顯。但是三個文字區域都不可空。需要補充文字方可使用)
.payload(messagePayload)//內容(這個長度夠你用了)
.restrictedPackageName("com.handsight.fras.app")//APP包名
.passThrough(passThrough)//是否透傳
.notifyType(notifyType)//設置震動,響鈴等等
.extra("extend_content", extendContent);//這里要注意下,你可以通過自定義的key傳給客戶端一段透傳參數
if (actionType == 1) {//動作跳轉根據自己定義的方式去跳轉url,if里的兩組.extra是必須要放入的,這段畫上重點
builder.extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_ACTIVITY)
.extra(Constants.EXTRA_PARAM_INTENT_URI, actionUrl);
} else if (actionType == 2) {
builder.extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_WEB)
.extra(Constants.EXTRA_PARAM_WEB_URI, actionUrl);
}
message = builder.build();
return message;
}
//1.2開始發送
public Result sendMessageToRegId(String messageId, String title, String description,
String messagePayload, Integer passThrough, Integer actionType, String actionUrl, Integer notifyType,
String extendContent, String regId) {
Constants.useOfficial();//這里要注意,這是正式-啟動方式,支持IOS跟Android,Constants.useSandbox();這是測試-啟動方式,不支持Android,盡量申請正式APP,利用正式環境測試
Sender sender = new Sender("jKAussDowdzuANrDvYm62A==");
Message message = buildMessageForAndroid(title, description, messagePayload, passThrough, actionType, actionUrl, notifyType, extendContent);
Result result = null;
try {
log.info("小米推送開始推送");
result = sender.send(message, "HL69kwZSUPet6hi05GSBA/XH3B17xwuVuCuM0vU3AajHItBjr7ivNM/l2n5mlLZQ", 1);
log.info("小米推送成功");
} catch (Exception e) {
log.info(e.getMessage());
}
return result;
}