准备
步骤
注册官方账号,将APP_KEY和MASTER_SECRET拷贝到程序里
1.需要安装官方的sdk
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.1</version>
</dependency>
2.简单配置
3.构建JPushClient或GroupPushClient
4.构建推送对象PushPayload
5.封装推送别名或标签等,如果时所有不需要
6.调用XXXClient的sendPush方法推送
7.后续处理…
一步一步来,,,
配置类
对其进行简单的封装
public class JPushConfig {
private static final String APP_KEY = "XXX";
private static final String MASTER_SECRET = "XXX";
private static final String GROUP_PUSH_KEY = "XXX";
private static final String GROUP_MASTER_SECRET = "XXX";
private static final String TITLE = "标题";
private static final String ALERT = "通知栏内容";
private static final String MSG_CONTENT = "自定义消息内容,应用内";
private static JPushClient jpushClient = null;
private static GroupPushClient groupPushClient = null;
/**
* * 基本设置
* AlertAll/MessageAll 所有广播/消息-所有平台-所有用户
* Platform 设置推送平台,可任意多选
* all 所有
* android
* ios
* winphone
* Audience 设置推送目标(用于过滤用户)
* tag 标签,可以封装成字符串数组
* alias 别名,可以封装成字符串数组
* registrationId 设备标识
* Notification 设置通知
* alert 内容
* android-
* setStyle 设置通知栏样式默认为0,还有1,2,3可选
* setTitle 设置标题
* addExtras 这里自定义JSON格式的信息,以供业务使用,传入Map。
* ios-
* setSound 通知提示声音
* addExtras 扩展字段
* winphoe-
* title 标题
* Message 设置应用内消息,需要 App 自行处理
* content 内容
* title 标题
* SMS 发送短信 需要用户的手机号码与设备的registration id匹配
* content 短信内容
* delay_time 安卓会延迟?秒发送
* Options 通用配置
* timeToLive 单位秒,用户不在线时预留时间(0-10天,默认1天)
* apnsProduction true 表示推送生产环境,false 表示要推送开发环境
*
*/
/**
* 取得 JPushClient对象
*/
public static JPushClient getClient(){
if(jpushClient == null){
ClientConfig clientConfig = ClientConfig.getInstance();
jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, clientConfig);
}
return jpushClient;
}
/**
* 取得 GroupPushClient对象(分组推送)
*/
public static GroupPushClient getGroupClient(){
if(groupPushClient == null){
groupPushClient = new GroupPushClient(GROUP_MASTER_SECRET, GROUP_PUSH_KEY);
}
return groupPushClient;
}
/**
* 安卓,ios-别名-通知
*/
public static PushPayload androidAndIOS_alias_alert(String[] alias) {
return PushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.setAlert(ALERT)
.addPlatformNotification(AndroidNotification.newBuilder()
.setStyle(1)
.build())
.addPlatformNotification(IosNotification.newBuilder()
.build())
.build())
.build();
}
/**
* 示例:ios-所有用户-标签-通知、短信
*/
public static PushPayload all_all_alert() {
return PushPayload.alertAll(ALERT);
}
public static PushPayload ios_tag_alert_extras_message(String[] tags, Map map, String msg) {
return PushPayload.newBuilder()
.setPlatform(Platform.ios())
.setAudience(Audience.tag_and(tags))
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder()
.setAlert(ALERT)
.setBadge(5) //角标,默认+1
.setSound("happy")
.addExtras(map)
.build())
.build())
.setMessage(Message.content(msg))
.setSMS(SMS.newBuilder().setContent(msg).setDelayTime(10).build())//发送短信,
.setOptions(Options.newBuilder()
.setApnsProduction(true)
.build())
.build();
}
}
PushPayload
构建模式
构建XXX表示一级目录,YYY表示二级目录,如果只设置一个参数可以简写如第二个setXXX
PushPayload.newBuilder()
.setXXX(XXX.newBuilder()
.setYYY()
.setYYY()
.build())
.setXXX(XXX.YYY())
...
.build();
对于推送所有的可简写,XXX为内容
PushPayload.alertAll(XXX);
使用
调用方法即可
//通过别名推送给安卓和ios
String[] alias = {XXX};
JPushClient jPushClient = JPushConfig.getClient();
try {
jPushClient.sendPush(JPushConfig.androidAndIOS_alias_alert(alias));
} catch (APIConnectionException e) {
logger.error("Connection error. Should retry later. ", e);
return MyResponseBody.error("推送异常");
} catch (APIRequestException e) {
logger.error("Error response from JPush server. Should review and fix it. ", e);
return MyResponseBody.error("推送异常");
}
官方示例