今天試用了極光推送API
用它是因為,大多數人說它的文檔是最全的,但是用過之后,發現關于IOS的文檔,還是很不夠,導致走了一點彎路!
特別是服務端的代碼:https://github.com/jpush/jpush-api-java-client ?for java
Java代碼
JPushClient?jpushClient?=? new?JPushClient(masterSecret,?appKey,? 0,?DeviceEnum.Android,? false);
CustomMessageParams?params?=? new?CustomMessageParams();
params.setReceiverType(ReceiverTypeEnum.TAG);
params.setReceiverValue(tag);
MessageResult?msgResult?=?jpushClient.sendCustomMessage(msgTitle,?msgContent,?params,? null);
LOG.debug( “responseContent?–?”?+?msgResult.responseResult.responseContent);
if?(msgResult.isResultOK())?{
LOG.info( “msgResult?–?”?+?msgResult);
LOG.info( “messageId?–?”?+?msgResult.getMessageId());
}? else?{
if?(msgResult.getErrorCode()?>? 0)?{
//?業務異常
LOG.warn( “Service?error?–?ErrorCode:?”
+?msgResult.getErrorCode()?+? “,?ErrorMessage:?”
+?msgResult.getErrorMessage());
}? else?{
//?未到達?JPush
LOG.error( “Other?excepitons?–?”
+?msgResult.responseResult.exceptionString);
}
}
JPushClient jpushClient = new JPushClient(masterSecret, appKey, 0, DeviceEnum.Android, false);
CustomMessageParams params = new CustomMessageParams();
params.setReceiverType(ReceiverTypeEnum.TAG);
params.setReceiverValue(tag);
MessageResult msgResult = jpushClient.sendCustomMessage(msgTitle, msgContent, params, null);
LOG.debug("responseContent - " + msgResult.responseResult.responseContent);
if (msgResult.isResultOK()) {
LOG.info("msgResult - " + msgResult);
LOG.info("messageId - " + msgResult.getMessageId());
} else {
if (msgResult.getErrorCode() > 0) {
// 業務異常
LOG.warn("Service error - ErrorCode: "
+ msgResult.getErrorCode() + ", ErrorMessage: "
+ msgResult.getErrorMessage());
} else {
// 未到達 JPush
LOG.error("Other excepitons - "
+ msgResult.responseResult.exceptionString);
}
}
這是它的推送案例,只有android的,沒有IOS的!
附送ios的代碼:
后來發現IOS完全不能試用sendCustomMessage這個方法.
Java代碼
/**
*
*/
package?org.haoyi.push;
import?java.util.HashMap;
import?java.util.Map;
import?org.apache.log4j.Logger;
import?cn.jpush.api.JPushClient;
import?cn.jpush.api.common.DeviceEnum;
import?cn.jpush.api.push.IosExtras;
import?cn.jpush.api.push.MessageResult;
import?cn.jpush.api.push.NotificationParams;
import?cn.jpush.api.push.ReceiverTypeEnum;
/**
*?@author?zfanxu
*
*/
public? class?PushDemo?{
public? static? final? int?MAX?=?Integer.MAX_VALUE?/? 2;
public? static? final? int?MIN?=?MAX?/? 2;
private? static?Logger?LOG?=?Logger.getLogger(PushDemo. class);
public? static? void?main(String[]?args)?{
JPushClient?jpushClient?=? new?JPushClient(Config.JPUSH_MASTER_SECRET,
Config.JPUSH_APPKEY,? 0,?DeviceEnum.IOS,? false);
for?( int?i?=? 0;?i?
String?notificationContent?=? “show?me?your?money!”;
NotificationParams?param?=? new?NotificationParams();
param.setSendNo(getRandomSendNo());
param.setReceiverType(ReceiverTypeEnum.REGISTRATION_ID);
param.setReceiverValue( “071f06f8c18″);
Map?extras?=? new?HashMap();
IosExtras?iosExtra?=? new?IosExtras( 1,? “message.wav”); //?badge
//?set?badge?and?sound
extras.put( “ios”,?iosExtra);
MessageResult?msgResult?=?jpushClient.sendNotification(
notificationContent,?param,?extras);
if?(msgResult.isResultOK())?{
LOG.info( “msgResult?–?”?+?msgResult);
LOG.info( “messageId?–?”?+?msgResult.getMessageId());
}? else?{
if?(msgResult.getErrorCode()?>? 0)?{
//?業務異常
LOG.warn( “Service?error?–?ErrorCode:?”
+?msgResult.getErrorCode()?+? “,?ErrorMessage:?”
+?msgResult.getErrorMessage());
}? else?{
//?未到達?JPush
LOG.error( “Other?excepitons?–?”
+?msgResult.responseResult.exceptionString);
}
}
}
}
/**
*
*?@return?sendNo
*/
public? static? int?getRandomSendNo()?{
return?( int)?(MIN?+?Math.random()?*?(MAX?–?MIN));
}
}
/**
*
*/
package org.haoyi.push;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import cn.jpush.api.JPushClient;
import cn.jpush.api.common.DeviceEnum;
import cn.jpush.api.push.IosExtras;
import cn.jpush.api.push.MessageResult;
import cn.jpush.api.push.NotificationParams;
import cn.jpush.api.push.ReceiverTypeEnum;
/**
* @author zfanxu
*
*/
public class PushDemo {
public static final int MAX = Integer.MAX_VALUE / 2;
public static final int MIN = MAX / 2;
private static Logger LOG = Logger.getLogger(PushDemo.class);
public static void main(String[] args) {
JPushClient jpushClient = new JPushClient(Config.JPUSH_MASTER_SECRET,
Config.JPUSH_APPKEY, 0, DeviceEnum.IOS, false);
for (int i = 0; i < 1; i++) {
String notificationContent = "show me your money!";
NotificationParams param = new NotificationParams();
param.setSendNo(getRandomSendNo());
param.setReceiverType(ReceiverTypeEnum.REGISTRATION_ID);
param.setReceiverValue("071f06f8c18");
Map extras = new HashMap();
IosExtras iosExtra = new IosExtras(1, "message.wav");// badge
// set badge and sound
extras.put("ios", iosExtra);
MessageResult msgResult = jpushClient.sendNotification(
notificationContent, param, extras);
if (msgResult.isResultOK()) {
LOG.info("msgResult - " + msgResult);
LOG.info("messageId - " + msgResult.getMessageId());
} else {
if (msgResult.getErrorCode() > 0) {
// 業務異常
LOG.warn("Service error - ErrorCode: "
+ msgResult.getErrorCode() + ", ErrorMessage: "
+ msgResult.getErrorMessage());
} else {
// 未到達 JPush
LOG.error("Other excepitons - "
+ msgResult.responseResult.exceptionString);
}
}
}
}
/**
* 保持 sendNo 的唯一性是有必要的 It is very important to keep sendNo unique.
*
* @return sendNo
*/
public static int getRandomSendNo() {
return (int) (MIN + Math.random() * (MAX - MIN));
}
}
先挖個坑,下班后,再填滿!