博客
关于我
极光推送Springboot微服务搭建教程
阅读量:667 次
发布时间:2019-03-15

本文共 4253 字,大约阅读时间需要 14 分钟。

极光推送服务配置与使用指南

前言

本文将详细介绍如何在Spring Boot项目中集成极光(JPush)推送服务,并提供三种推送方式的实现方案。

服务端配置文件

在项目中添加极光推送的相关配置,安装完成后即可正常使用。

application.properties 配置

application.properties文件中添加以下配置项:

jpush.appKey=12340856031dc012a7d456jpush.masterSecret=123493e8a9be718f023023jpush.liveTime=300000

##Spring Boot配置

添加依赖

在项目的POM文件中添加JPush客户端依赖:

cn.jpush.api
jpush-client
3.3.4

配置文件处理

通过Spring注入配置信息,基本无需修改即可使用。配置示例如下:

import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Component("jpushConfig")public class JpushConfig {    @Value("${jpush.appKey}")    private String appkey;    @Value("${jpush.masterSecret}")    private String masterSecret;    @Value("${jpush.liveTime}")    private String liveTime;    public String getAppkey() { return appkey; }    public String getMasterSecret() { return masterSecret; }}

推送服务类封装

宽布包推送

提供多种推送方式的封装实现,确保推送过程高效且可靠。

推送方式

服务端控制推送内容方式

public PushResult sendPush(String title, String content, Map
extrasMap, String... alias) { ClientConfig clientConfig = ClientConfig.getInstance(); clientConfig.setTimeToLive(Long.valueOf(jpushConfig.getLiveTime())); JPushClient jpushClient = new JPushClient(jpushConfig.getMasterSecret(), jpushConfig.getAppkey(), null, clientConfig); PushPayload payload = buildPushPayload(title, content, extrasMap, alias); try { return jpushClient.sendPush(payload); } catch (APIConnectionException e) { LOG.error("极光推送连接错误,请稍后重试", e); } catch (APIRequestException e) { LOG.error("极光服务器响应出错,请修复!", e); LOG.info("HTTP Status: %d", e.getStatus()); LOG.info("Error Code: %d", e.getErrorCode()); LOG.info("Error Message: %s", e.getErrorMessage()); }}

服务端控制推送方式(带返回值)

public PushResult sendPushWithCallback(String title, String content, Map
extrasMap, String... alias) { ClientConfig clientConfig = ClientConfig.getInstance(); clientConfig.setTimeToLive(Long.valueOf(jpushConfig.getLiveTime())); String host = (String) clientConfig.get(ClientConfig.PUSH_HOST_NAME); NettyHttpClient client = new NettyHttpClient(ServiceHelper.getBasicAuthorization(jpushConfig.getAppkey(), jpushConfig.getMasterSecret()), null, clientConfig); try { URI uri = new URI(host + clientConfig.get(ClientConfig.PUSH_PATH)); PushPayload payload = buildPushPayload(title, content, extrasMap, alias); client.sendRequest(HttpMethod.POST, payload.toString(), uri, new NettyHttpClient.BaseCallback() { @Override public void onSucceed(ResponseWrapper responseWrapper) { if (200 == responseWrapper.responseCode) { LOG.info("极光推送成功"); } else { LOG.info("极光推送失败,返回结果: %s", responseWrapper.responseContent); } } }); } catch (URISyntaxException e) { e.printStackTrace(); } finally { client.close(); }}

客户端自定义显示推送方式

public PushResult sendCustomPush(String title, String content, Map
extrasMap, String... alias) { ClientConfig clientConfig = ClientConfig.getInstance(); clientConfig.setTimeToLive(Long.valueOf(jpushConfig.getLiveTime())); JPushClient jpushClient = new JPushClient(jpushConfig.getMasterSecret(), jpushConfig.getAppkey(), null, clientConfig); PushPayload payload = buildCustomPushPayload(title, content, extrasMap, alias); try { return jpushClient.sendPush(payload); } catch (APIConnectionException e) { LOG.error("极光推送连接错误,请稍后重试", e); } catch (APIRequestException e) { LOG.error("极光服务器响应出错,请修复!", e); LOG.info("HTTP Status: %d", e.getStatus()); LOG.info("Error Code: %d", e.getErrorCode()); LOG.info("Error Message: %s", e.getErrorMessage()); }}

使用方法

一键启动

通过简单配置即可快速集成极光推送服务。

推送示例

@AutowiredJpushService jpushService;String title = "推送标题";String content = "推送内容";Map
extrasMap = new HashMap<>();extrasMap.put("extraKey", "extraValue");// 使用方式一:默认推送jpushService.sendPush(title, content, extrasMap);// 使用方式二:带返回值jpushService.sendPushWithCallback(title, content, extrasMap);

应用场景

  • 系统消息推送
  • 行程通知
  • этим等其他需要及时通知的场景

注意事项

  • 确保极光官网申请的密钥有效
  • 推送内容保持在22字以内以便展示
  • 调用前确保依赖库已加入项目
  • 高并发场景时需考量推送背压

如有疑问,请到极光官网或社区求助。

转载地址:http://xmfqz.baihongyu.com/

你可能感兴趣的文章
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>