極光推送的APP_KEY和MASTER_SECRET須要再極光推送官網註冊後生成,java
1.先生成推送平臺android
2.推送的內容再生成平臺時生成ios
public static void main(String[] args) {
PushPayload payload = JpushUtil.buildAndroidAndIOSPayload( "呵呵");
JpushUtil.pushMsgWithCallback(payload, MASTER_SECRET, APP_KEY);
}windows
package com.tempetek.client.common;api
import io.netty.handler.codec.http.HttpMethod;app
import java.net.URI;異步
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;ide
import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.ServiceHelper;
import cn.jiguang.common.connection.NettyHttpClient;
import cn.jiguang.common.resp.ResponseWrapper;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
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.Notification;工具
/**
*
* @description 極光推送工具類
* @author lipinxian
* @date 2017年2月28日下午7:02:05
*/
public class JpushUtil {
protected static final Logger LOG = LoggerFactory.getLogger(JpushUtil.class);
// public final static String APP_KEY = "4f68dced44297cfa85da8b68";
// public final static String MASTER_SECRET = "035ce832f2ad7fd3a27c5535";
/**
*
* @description 使用NettyHttpClient異步接口發送請求
* @author lipinxian
* @date 2017年3月1日下午1:45:21
* @param pushPayload 推送對象
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
*/
public static void pushMsgWithCallback(PushPayload pushPayload, String masterSecret, String appKey) {
ClientConfig clientConfig = ClientConfig.getInstance();
String host = (String)clientConfig.get(ClientConfig.PUSH_HOST_NAME);
final NettyHttpClient client = new NettyHttpClient(ServiceHelper.getBasicAuthorization(appKey, masterSecret), null, clientConfig);
try {
URI uri = new URI(host + clientConfig.get(ClientConfig.PUSH_PATH));
client.sendRequest(HttpMethod.POST, pushPayload.toString(), uri, new NettyHttpClient.BaseCallback() {
@Override
public void onSucceed(ResponseWrapper arg0) {
// TODO Auto-generated method stub
LOG.info("pushMsgWithCallback的結果:" + arg0.responseContent);
}
});
} catch (Exception e) {
e.printStackTrace();
LOG.info("pushMsgWithCallback失敗:" + e.getMessage());
} finally {
client.close();
}
}
/**
*
* @description 根據別名往IOS和Android上推送消息
* @author lipinxian
* @date 2017年3月1日下午3:35:30
* @param alias 別名
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
* @param alert 推送內容
*/
public static void pushMsgToAndroidAndIOSAlias(String alias, String masterSecret, String appKey, String alert) {
PushPayload pushPayload = buildAndroidAndIOSPayloadAlias(alias, alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
PushResult result = jpushClient.sendPush(pushPayload);
LOG.info("pushMsgToAndroidAndIOSAlias的結果:" + result);
} catch (Exception e) {
e.printStackTrace();
LOG.info("pushMsgToAndroidAndIOSAlias失敗:" + e.getMessage());
}
}
/**
*
* @description 往IOS和Android上推送消息
* @author lipinxian
* @date 2017年3月1日下午3:45:20
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
* @param alert 推送內容
*/
public static void pushMsgToAndroidAndIOS(String masterSecret, String appKey, String alert) {
PushPayload pushPayload = buildAndroidAndIOSPayload(alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
PushResult result = jpushClient.sendPush(pushPayload);
LOG.info("pushMsgToAndroidAndIOS的結果:" + result);
} catch (Exception e) {
e.printStackTrace();
LOG.info("pushMsgToAndroidAndIOS失敗:" + e.getMessage());
}
}
/**
*
* @description 根據別名往特定的Android APP上推送消息
* @author lipinxian
* @date 2017年2月28日下午7:09:54
* @param alias 別名
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
* @param alert 推送內容
*/
public static void pushMsgToAndroidAlias(String alias, String masterSecret, String appKey, String alert) {
PushPayload pushPayload = buildAndroidWinphonePayloadAlias(alias, alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
PushResult result = jpushClient.sendPush(pushPayload);
LOG.info("pushMsgToAndroid的結果:" + result);
} catch (Exception e) {
e.printStackTrace();
LOG.info("pushMsgToAndroid失敗:" + e.getMessage());
}
}
/**
*
* @description 往android APP上推送消息
* @author lipinxian
* @date 2017年3月1日下午3:49:10
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
* @param alert 推送內容
*/
public static void pushMsgToAndroid(String masterSecret, String appKey, String alert) {
PushPayload pushPayload = buildAndroidWinphonePayload(alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, ClientConfig.getInstance());
PushResult result = jpushClient.sendPush(pushPayload);
LOG.info("pushMsgToAndroid的結果:" + result);
} catch (Exception e) {
e.printStackTrace();
LOG.info("pushMsgToAndroid失敗:" + e.getMessage());
}
}
/**
*
* @description 根據別名往特定的IOS APP上推送消息
* @author lipinxian
* @date 2017年2月28日下午7:18:51
* @param alias 別名
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
* @param alert 推送內容
*/
public static void pushMsgToIOSAlias(String alias, String masterSecret, String appKey, String alert) {
PushPayload pushPayload = buildIOSPayloadAlias(alias, alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
jpushClient.sendPush(pushPayload);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @description 往IOS APP上推送消息
* @author lipinxian
* @date 2017年3月1日下午3:50:12
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
* @param alert 推送內容
*/
public static void pushMsgToIOS(String masterSecret, String appKey, String alert) {
PushPayload pushPayload = buildIOSPayload(alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
jpushClient.sendPush(pushPayload);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @description 推送消息到全部平臺、全部設備
* @author lipinxian
* @date 2017年3月1日上午10:36:29
* @param alert 推送內容
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
*/
public static void pushMsgToAll(String alert, String masterSecret, String appKey) {
PushPayload pushPayload = buildPushAllPayload(alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
PushResult result = jpushClient.sendPush(pushPayload);
LOG.info("pushMsgToAll的結果:" + result);
} catch (Exception e) {
e.printStackTrace();
LOG.info("pushMsgToAll失敗:" + e.getMessage());
}
}
/**
*
* @description 推送消息到全部平臺,且目標別名爲alias的設備
* @author lipinxian
* @date 2017年3月1日上午10:54:45
* @param alias 別名
* @param alert 推送內容
* @param masterSecret Portal上註冊時生成的masterSecret
* @param appKey Portal上註冊時生成的appKey
*/
public static void pushMsgToAllAlias(String alias, String alert, String masterSecret, String appKey) {
PushPayload pushPayload = buildPushAllPayloadAlias(alias, alert);
try {
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
PushResult result = jpushClient.sendPush(pushPayload);
LOG.info("pushMsgToAllAlias的結果:" + result);
} catch (Exception e) {
e.printStackTrace();
LOG.info("pushMsgToAllAlias失敗:" + e.getMessage());
}
}
/**
*
* @description 構建一個通知全部平臺的,全部設備的推送對象
* @author lipinxian
* @date 2017年2月28日下午7:01:29
* @param alert 推送內容
* @return
*/
public static PushPayload buildPushAllPayload(String alert) {
return PushPayload.alertAll(alert);
}
/**
*
* @description 構建一個通知全部平臺,推送目標別名爲alias的推送對象
* @author youmusen
* @date 2017年3月1日上午9:22:50
* @param alias 推送別名
* @param alert 推送內容
* @return
*/
public static PushPayload buildPushAllPayloadAlias(String alias, String alert) {
return PushPayload.newBuilder()
.setPlatform(Platform.all()) //設置接收的平臺
.setAudience(Audience.alias(alias))
.setNotification(Notification.alert(alert))
.build();
}
/**
*
* @description 構建一個推送平臺爲IOS且推送目標別名爲alias的推送對象
* @author lipinxian
* @date 2017年2月28日下午6:53:18
* @param alias 別名
* @param alert 推送內容
* @return
*/
public static PushPayload buildIOSPayloadAlias(String alias, String alert) {
return PushPayload.newBuilder()
.setPlatform(Platform.ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.setAlert(alert)
.build())
.build();
}
/**
*
* @description 構建一個推送平臺爲IOS的推送對象
* @author youmusen
* @date 2017年3月1日下午3:48:14
* @param alert 推送內容
* @return
*/
public static PushPayload buildIOSPayload(String alert) {
return PushPayload.newBuilder()
.setPlatform(Platform.ios())
.setAudience(Audience.all())
.setNotification(Notification.newBuilder()
.setAlert(alert)
.build())
.build();
}
/**
*
* @description 構建一個推送平臺爲Android和windows phone且推送目標別名爲alias的推送對象
* @author lipinxian
* @date 2017年2月28日下午6:58:28
* @param alias 別名
* @param alert 推送內容
* @return
*/
public static PushPayload buildAndroidWinphonePayloadAlias(String alias, String alert) {
return PushPayload.newBuilder()
.setPlatform(Platform.android())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.setAlert(alert)
.build())
.build();
}
/**
*
* @description 構建一個推送平臺爲Android和windows phone的推送對象
* @author youmusen
* @date 2017年3月1日下午3:47:19
* @param alert 推送內容
* @return
*/
public static PushPayload buildAndroidWinphonePayload(String alert) {
return PushPayload.newBuilder()
.setPlatform(Platform.android())
.setAudience(Audience.all())
.setNotification(Notification.newBuilder()
.setAlert(alert)
.build())
.build();
}
/**
*
* @description 構建一個推送平臺爲Android和IOS且推送目標別名爲alias的推送對象
* @author lipinxian
* @date 2017年3月1日下午3:30:52
* @param alias 別名
* @param alert 推送內容
* @return
*/
public static PushPayload buildAndroidAndIOSPayloadAlias(String alias, String alert) {
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.setAlert(alert)
.build())
.build();
}
/**
*
* @description 構建一個推送平臺爲Android和IOS的推送對象
* @author lipinxian
* @date 2017年3月1日下午3:41:12
* @param alert 推送內容
* @return
*/
public static PushPayload buildAndroidAndIOSPayload(String alert) {
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.all())
.setNotification(Notification.newBuilder()
.setAlert(alert)
.build())
.build();
}
}ui