目录
一、引入maven依赖
二、极光推送工具类 JPushUtil
三、调用工具类
四、遇到问题
开发移动端app时,需要系统进行即时通讯、消息通知提醒,这时候就用到了:极光推送
我这里使用的是springboot简单贴下代码
原文找不到了~~,东拼西凑的整理一篇完整的,已经测试过了,直接用就OK了
一、引入maven依赖
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.9</version>
</dependency>
二、极光推送工具类 JPushUtil
APP_KEY,MASTER_SECRET:需要去极光推送官网,注册个人开发者,创建推送应用获取到密钥。
极光推送工具类:我这边是根据和移动端约定的别名alias来推送消息的。
小伙伴们需要发送all,android,ios,等用户直接修改Platform,还可以根据rid,alias等来进行约定的推送目标,直接修改Audience。
还有其他需要,可以浏览极光官方文档作相应的修改。
package com.xyhsoft.ygt.yqjj.web.utils;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
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;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 极光推送工具类
* @Author stx
* @Date 2022/8/18/0018 16:08
*/
@Slf4j
@Component
public class JPushUtil {
@Value("${jPush.app-key}")
private String APP_KEY;
@Value("${jPush.master-secret}")
private String MASTER_SECRET;
//极光推送>>All所有平台
public void jPush(Map<String,String> param) {
//创建JPushClient
JPushClient jpushClient = new JPushClient(MASTER_SECRET,APP_KEY);
//创建option
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.all()) //所有平台的用户
.setAudience(Audience.alias(param.get("alias")))
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder() //发送ios
.setAlert(param.get("msg")) //消息体
.setBadge(+1)
.setSound("happy") //ios提示音
.addExtras(param) //附加参数
.build())
.addPlatformNotification(AndroidNotification.newBuilder() //发送android
.addExtras(param) //附加参数
.setAlert(param.get("msg")) //消息体
.setTitle(param.get("title"))
.build())
.build())
.setOptions(Options.newBuilder().setApnsProduction(true).build())//指定开发环境 true为生产模式 false 为测试模式 (android不区分模式,ios区分模式)
.setMessage(Message.newBuilder().setMsgContent(param.get("msg")).addExtras(param).build())//自定义信息
.build();
try {
PushResult pushResult = jpushClient.sendPush(payload);
log.info("-----------------[极光推送]PushResult result is " + pushResult);
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
}
}
三、调用工具类
调用工具类实现接口功能的时候,一定要自己先行下载推送demo,或者与web端约定rid或alias等值,不然测试会报出code:1011。
package com.xyhsoft.ygt.yqjj.web.jiguang;
import com.xyhsoft.ygt.yqjj.web.utils.JPushUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* @Author stx
* @Date 2022/8/18/0018 16:08
*/
@RestController
@RequestMapping("/jPush")
@Api(value = "呼叫医院-极光推送",tags = "呼叫医院-极光推送")
public class JPushController {
@Autowired
private JPushUtil jPushUtil;
@GetMapping("/jPushAll")
@ApiImplicitParams({
@ApiImplicitParam(name = "alias", value = "jPush推送别名", dataType = "String",required = true),
@ApiImplicitParam(name = "status", value = "通话请求状态", dataType = "String",required = true)
})
public void jPushAll(@RequestParam("alias")String alias, @RequestParam("status")int status){
//设置推送参数
Map<String,String> param = new HashMap();
if (status==0) {
param.put("msg", "对方已接受");
param.put("title", "呼叫请求");
param.put("alias", alias);
jPushUtil.jPush(param);
}
if (status==1) {
param.put("msg", "对方已拒绝");
param.put("title", "呼叫请求");
param.put("alias", alias);
jPushUtil.jPush(param);
}
}
}
四、遇到问题
引入maven的时候,可能会遇到引入的mave依赖中有jar包冲突
测试报出code代码值1011:没有满足条件的推送目标;1004:检查 Appkey 与 MasterSecret等。