实现过程:
从APP端集成极光推送插件,启动时调用方法获取极光推送返回的registrationId,登录时传入后台保存在数据库里,后台服务集成极光的java版SDK封装自己常用的推送服务方法的服务类,即可实现消息推送。
一、APP后台服务springboot 部分的代码
- 修改POM文件,引入集成的极光推送java版SDK所需要的包
<!-- 极光推送 begin -->
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.11</version>
</dependency>
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.36.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!-- 极光推送 end -->
2、在application.properties文件里,加上在极光官网注册申请的appKey和masterSecret
#极光推送
jpush.appKey=ed4b5b5b4a2a28dadc20bb**
jpush.masterSecret=49bc960f1801bdd69d07****
jpush.apnsProduction=false
3、JPushService.java
package com.sgitg.***.service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.device.TagListResult;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.Options;
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.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;
@Component
public class JPushService {
/** 日志 */
protected static final Logger logger = LoggerFactory.getLogger(JPushService.class);
@Value("${jpush.appKey}")
private String appKey;
@Value("${jpush.masterSecret}")
private String masterSecret;
@Value("${jpush.apnsProduction}")
private boolean apnsProduction;
private static JPushClient jPushClient = null;
private static final int RESPONSE_OK = 200;
public JPushClient getJPushClient() {
if (jPushClient == null) {
jPushClient = new JPushClient(masterSecret, appKey);
}
return jPushClient;
}
/**
* 推送到alias列表
*
* @param alias 别名或别名组
* @param notificationTitle 通知内容标题
* @param msgTitle 消息内容标题
* @param msgContent 消息内容
* @param extras 扩展字段
*/
public void sendToAliasList(List<String> alias, String notificationTitle, String msgTitle, String msgContent,
String extras) {
PushPayload pushPayload = buildPushObject_all_aliasList_alertWithTitle(alias, notificationTitle, msgTitle,
msgContent, extras);
this.sendPush(pushPayload);
}
/**
*
* @param registrationIds 设备ID
* @param notificationTitle
* @param msgTitle
* @param msgContent
* @param extras
*/
public void sendToRegistRationIdsList(List<String> registrationIds, String notificationTitle, String msgTitle, String msgContent,
String extras) {
PushPayload pushPayload = buildPushObject_all_registrationIdsList_alertWithTitle(registrationIds, notificationTitle, msgTitle,
msgContent, extras);
this.sendPush(pushPayload);
}
/**
* 推送到tag列表
*
* @param tagsList Tag或Tag组
* @param notificationTitle 通知内容标题
* @param msgTitle 消息内容标题
* @param msgContent 消息内容
* @param extras 扩展字段
*/
public void sendToTagsList(List<String> tagsList, String notificationTitle, String msgTitle, String msgContent,
String extras) {
PushPayload pushPayload = buildPushObject_all_tagList_alertWithTitle(tagsList, notificationTitle, msgTitle,
msgContent, extras);
this.sendPush(pushPayload);
}
/**
* 发送给所有安卓用户
*
* @param notificationTitle 通知内容标题
* @param msgTitle 消息内容标题
* @param msgContent 消息内容
* @param extras 扩展字段
*/
public void sendToAllAndroid(String notificationTitle, String msgTitle, String msgContent, S