极光推送实现

注意:个人无法使用此功能,因为个人申请使用是不会通过的
建议先看一下:
Linux curl命令最全详解
curl使用总结

1、创建极光推送流程

极光消息推送文档
查看创建应用和创建消息推送两个文档(写的很详细,如何创建)
在这里插入图片描述
API文档
在这里插入图片描述
其中需要注意,获取appKey和masterSecret在:
在这里插入图片描述

2、调用API

这里是发送post请求调用,且这里客户端请求(需要有认证信息),且需要对appKey和masterSecret进行base64算法加密
HTTP基本认证(https://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81)
在这里插入图片描述
创建推送请求示例:在这里插入图片描述
返回示例:
在这里插入图片描述
推送对象:
在这里插入图片描述
示例说明:
在这里插入图片描述

3、代码实现

这里采用了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<String> 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
是在前端调用获取到的在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值