前言:
前段做一个项目,需要做一个手机端的app,于是对应的需要一个推送的功能,我就看了目前几个做了推送的产品,最后还是选择了一个免费的jpush来使用,因为公司自己用,如果有性能要求,则需要购买会员,有专门的通道可以避免延迟。下面开始介绍:
首先在jpush上的开发者服务上,进行模拟测试,生成一个app,扫码下载后进行,进行发送消息的测试,测试截图如下:
;
不太了解 的可以先熟悉下官网教程。下面说下代码怎么实现的
首先在后台中引入极光推送的jar包
cn.jpush.api
jpush-client
3.3.11
cn.jpush.api
jiguang-common
1.1.4
代码如下:
public class JpushClientUtil {
private final static String masterSecret = “****";
private final static String appKey = "”;
private static JPushClient jPushClient = new JPushClient(masterSecret,appKey);
/**
* 推送给设备标识参数的用户
* @param registrationId 设备标识
* @param notification_title 通知内容标题
* @param msg_title 消息内容标题
* @param msg_content 消息内容
* @param extrasparam 扩展字段
* @return 0推送失败,1推送成功
*/
public static int sendToRegistrationId(List<String> registrationList, String notification_title, String msg_title, String msg_content, String extrasparam, String type) {
int result = 0;
try {
PushPayload pushPayload=null;
if(type.equals("0")){//自定义推送
pushPayload=JpushClientUtil.buildPushObject_all_registrationId_alertWithTitle(registrationList,notification_title,msg_title,msg_content,extrasparam);
System.out.println(pushPayload);
}else if(type.equals("1")){
pushPayload=JpushClientUtil.buildPushObject(registrationList,notification_title,msg_title,msg_content,extrasparam);
System.out.println(pushPayload);
}
PushResult pushResult=jPushClient.sendPush(pushPayload);
System.out.println(pushResult);
if(pushResult.getResponseCode()==200){
result=1;
}
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
return result;
}
/**
* @Description iOS测试(弹给注册id用户)
* @param [title, subtitle, body]
* @return void
**/
public static int testSendIosAlert(String title,String subtitle,String body,Map<String,String> extras,String registerId) {
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
IosAlert alert = IosAlert.newBuilder()
.setTitleAndBody(title, subtitle, body)
.setActionLocKey("PLAY")
.build();
if(StringUtil.isEmpty(title)||StringUtil.isEmpty(subtitle)||StringUtil.isEmpty(body)||StringUtil.isEmpty(registerId)){
return 0;
}
try {
List<String> registerIDs = new ArrayList<>();
registerIDs.add(registerId);
PushPayload pushPayload= JpushClientUtil.buildPushObject(registerIDs,title,subtitle,body,"");
System.out.println(pushPayload);
PushResult result=jPushClient.sendPush(pushPayload);
//PushResult result = jpushClient.sendIosNotificationWithAlias(alert, new HashMap<String, String>(), "alias1");
//--PushResult result = jpushClient.sendIosNotificationWithRegistrationID(alert, extras,registerId);
//PushResult result = jpushClient.sendIosMessageWithRegistrationID(title,subtitle,body,registerId);
System.out.println("Got result - " + result);
return 1;
} catch (APIConnectionException e) {
System.out.println("Connection error. Should retry later. "+e);
} catch (APIRequestException e) {
System.out.println("Error response from JPush server. Should review and fix it. "+e);
}
return 0;
}
/**
* @Description andriod 测试(弹给注册id用户)
* @param [title, alert, map, registerID]
* @return void
**/
public static int testSendAndroidAlert(String title,String alert,Map map,String registerID){
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
if(StringUtil.isEmpty(title)||StringUtil.isEmpty(alert)||StringUtil.isEmpty(registerID)){
return 0;