注意:个人无法使用此功能,因为个人申请使用是不会通过的
建议先看一下:
Linux curl命令最全详解
curl使用总结
极光消息推送文档
查看创建应用和创建消息推送两个文档(写的很详细,如何创建)
API文档
其中需要注意,获取appKey和masterSecret在:
这里是发送post请求调用,且这里客户端请求(需要有认证信息),且需要对appKey和masterSecret进行base64算法加密
HTTP基本认证(https://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81)
创建推送请求示例:
返回示例:
推送对象:
示例说明:
这里采用了hutool工具包封装的方法发生post请求
hutool发送Http请求-HttpRequest
使用 hutool 工具包发送 HTTP 请求
依赖:
<!--Hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.16</version>
</dependency>
这里实现的是 audience:推送目标的推送给多个注册 ID:
代码:
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* @author xn
*/
public class JpushService {
/**
* 极光推送的APP KEY
*/
String JPUSH_APP_KEY = "xxx";
/**
* 极光推送的MASTER SECRET
*/
String JPUSH_MASTER_SECRET = "xxx";
/**
* 发送通知消息,封装数据
*
* @param userUuid 用户的Uuid (这里demo用不到userUuid)
* @param title 题目
* @param content 内容
*/
public void pushNotification(String userUuid, String title, String content) {
//根据用户userUuid从数据库中查找存储的jpushRegistrationId
//List jpushRegistrationId = userDeviceInfoMapper.getUserJpushRegistrationId(userUuid);
List<String> jpushRegistrationId = new ArrayList<>();
jpushRegistrationId.add("xxx");
jpushRegistrationId.add("xxx");
if (jpushRegistrationId.size() > 0) {
JSONObject requestData = new JSONObject();
requestData.put("platform", "all");
JSONArray registrationIds = new JSONArray();
registrationIds.addAll(jpushRegistrationId);
JSONObject audience = new JSONObject();
audience.put("registration_id", registrationIds);
requestData.put("audience", audience);
JSONObject notification = new JSONObject();
JSONObject android = new JSONObject();
android.put("alert", content);
android.put("title", title);
notification.put("android", android);
JSONObject ios = new JSONObject();
ios.put("alert", content);
notification.put("ios", ios);
requestData.put("notification", notification);
jpushNotificationNetworkHandler(requestData);
}
}
/**
* 发送推送
*
* @param requestData 请求参数
*/
private void jpushNotificationNetworkHandler(JSONObject requestData) {
try {
//只需要执行就行了,不需要过去结果
HttpRequest.post("https://api.jpush.cn/v3/push")
.basicAuth(JPUSH_APP_KEY, JPUSH_MASTER_SECRET)
.body(requestData.toString())
.timeout(20000)
.execute().body();
} catch (Exception exception) {
System.out.println(exception);
}
}
}
其中如何获取registration_id: 查看该API
是在前端调用获取到的