1.极光推送账号准备

  要使用极光消息推送必须先在官方网站上注册账号,并添加应用.

  产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/

  注册开发者账号:https://www.jiguang.cn/accounts/register

  注册完成后需要添加应用

  应用配置好后有两个重要的数据,必须获取到,在后面发送消息的时候要使用:

  

2.极光推送后端管理配置认识

  要做极光推送,得先认识极光账号的后端管理平台,应为在开发的时候很多参数和配置来自于后端管理系统

  先宏观认识一下消息推送流程图:

  

  后端管理说明:https://docs.jiguang.cn/jpush/console/Instructions/

3.集成java服务端

3.1.添加maven依赖,使用官方提供的sdk

  <!-- 极光推送 -->
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.3.12</version>
</dependency>

3.2.客户端java代码

代码参考文档:

https://docs.jiguang.cn/jpush/server/push/server_overview/

 package com.qianxingniwo.client;

 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.Notification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.util.ArrayList;
import java.util.List; /**
* @Copyright (C) 四川千行你我科技有限公司
* @Author: LI DONG PING
* @Date: 7/3 19:11
* @Description:
*/ public class JpushClientUtil {
private static final Logger log = LoggerFactory.getLogger(JpushClientUtil.class); private final static String appKey = "应用的key(非登录账号)"; private final static String masterSecret = "应用的密码(非登录密码)"; private static JPushClient jPushClient = new JPushClient(masterSecret, appKey); /**
* 发送给所有安卓用户
*
* @param notification_title 通知内容标题
* @param msg_title 消息内容标题
* @param msg_content 消息内容
* @param extrasparam 扩展字段
* @return 0推送失败,1推送成功
*/
public static int sendToAllAndroid(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
int result = 0;
try {
PushPayload pushPayload = JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title, msg_title, msg_content, extrasparam, cid);
System.out.println("推送参数:" + pushPayload);
PushResult pushResult = jPushClient.sendPush(pushPayload);
System.out.println("推送结果:" + pushResult);
if (pushResult.getResponseCode() == 200) {
result = 1;
}
} catch (Exception e) { e.printStackTrace();
} return result;
} /**
* 生产发送条件
*
* @param notification_title
* @param msg_title
* @param msg_content
* @param extrasparam
* @param cid
* @return
*/
private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
log.info("构建推送参数,如推荐平台,接收对象");
//具体参看接口文档
//https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
List list = new ArrayList();
// Audience.tag(list);
// Audience audience = Audience.alias("112201","112202");//别名推送
// Audience audience = Audience.tag("tag1");
//Audience audience = Audience.all();
// Audience audience = Audience.registrationId("112201", "112202");
Audience audience = Audience.segment("c8f2fff736");
return PushPayload.newBuilder()
//指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
.setPlatform(Platform.android())
//设置发送消息id
// .setCid(cid)
//指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
.setAudience(audience)
// .setAudience(Audience.tag(list))
//jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
.setNotification(Notification.newBuilder()
//指定当前推送的android通知
.addPlatformNotification(AndroidNotification.newBuilder()
.setAlert(notification_title)
.setTitle(notification_title)
//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
.addExtra("androidNotification extras key", extrasparam)
.build())
.build()
)
//Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
// sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
// [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
.setMessage(Message.newBuilder()
.setMsgContent(msg_content)
.setTitle(msg_title)
.addExtra("message extras key", extrasparam)
.build()) .setOptions(Options.newBuilder()
//此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
.setApnsProduction(false)
//此字段是给开发者自己给推送编号,方便推送者分辨推送记录
.setSendno(1)
//此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
.setTimeToLive(86400)
.build())
.build();
} /**
* 发送测试
*
* @param args
*/
public static void main(String[] args) {
String num = "-0405-别名";
String notification_title = "推送测试-通知标题" + num;
String msg_title = "推送测试-内容标题" + num;
String msg_content = "我是内容" + num;
String extrasparam = "我是扩展的json" + num;
String cid = String.valueOf(System.currentTimeMillis());
int i = JpushClientUtil.sendToAllAndroid(notification_title, msg_title, msg_content, extrasparam, cid);
System.out.println("i=" + i);
}
}

3.3.发送测试

  执行发送后,如果发送成功,我们可以在后端管理系统中看见消息详情

  

3.3.注意事项

  1.刚建立的极光账号由于配置的原因,很多发送条件是测试不了的,一定要信息阅读接口文档,如下:

  

  2.cid并非任意编号,而是有规则的

  

  3.遇到问题再补充....

java服务端集成极光消息推送--详细开发步骤的更多相关文章

  1. atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p

    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p 1. 推送所设计到底功能1 1.1. 内容压缩1 1.2. 多引擎1 2. reg  ,设置appkey and pw ...

  2. php做推送服务端实现ios消息推送

    本文部分内容引用于 http://zxs19861202.iteye.com/blog/1532460 准备工作 1.获取手机注册应用的deviceToken(iphone手机注册应用时返回唯一值de ...

  3. .NET对接极光消息推送

    什么是APP消息推送? 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的"消息 ...

  4. java服务端的 极光推送

    项目中用到了极光推送  下面写下笔记 首先引入jar包   下载地址https://docs.jiguang.cn/jpush/resources/(非maven项目的下载地址) <depend ...

  5. 使用flask_socketio实现服务端向客户端定时推送

    websocket连接是客户端与服务器之间永久的双向通信通道,直到某方断开连接. 双向通道意味着在连接时,服务端随时可以发送消息给客户端,反之亦然,这在一些需要即时通讯的场景比如多人聊天室非常重要. ...

  6. Socket通讯-C#客户端与Java服务端通讯(发送消息和文件)

    设计思路 使用websocket通信,客户端采用C#开发界面,服务端使用Java开发,最终实现Java服务端向C#客户端发送消息和文件,C#客户端实现语音广播的功能. Java服务端设计 packag ...

  7. Java实现 微信小程序 + 消息推送

    实现效果: 下面要显示五个字段 接下来,参照官方文档,一步步实现: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open- ...

  8. 利用控制台承载SignalR作为服务端、及第三方推送信息

    一 首先建立一个控制台需要引用一些组件 特别要注意引用Microsoft.Owin.Host.HttpListener别忘了这个组件,不引用他可能程序正常运行不会报错,但服务器一直开启失败(我之前就是 ...

  9. 1、简述在java网络编程中,服务端程序与客户端程序的具体开发步骤?

    网络编程分为UDP通信和TCP通信 UDP协议: 发送端:1.创建DatagramSocket对象.2.创建DatagramPacket对象,并封装数据.3.发送数据.4.释放 资源. 接收端:1.创 ...

随机推荐

  1. Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果

    Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果 在创建好Shell解决方案后,就可以运行程序了.本小节将讲解运行后的效果. 内容列表页面 运行程序,初始效果如图1 ...

  2. CentOS 7 卸载OpenJdk安装Oracle Jdk1.8

    CentOS 7 卸载OpenJdk安装Oracle Jdk1.81.查询openjdk:rpm -qa | grep jdk2.卸载OpenJdkrpm -e --nodeps 查询到的结果3.安装 ...

  3. WMS培训20190907

    SELECT * FROM WMSADMIN.SPROCEDUREMAP WHERE THEPROCNAME ='NSPBEFOREORDERWRITE' 二,. RF中页面中需要增加申请人,而成品仓 ...

  4. leetcode No.500 键盘行 keyboard-row (Python3实现)

    题目描述 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词.键盘如下图所示. 示例: 输入: ["Hello", "Alaska", " ...

  5. Python实用日期时间处理方法汇总

    这篇文章主要介绍了Python实用日期时间处理方法汇总,本文讲解了获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个d ...

  6. .NET 小程序微信用户支付

    微信支付有两种模式:微信用户主动发起的支付.签约委托支付协议后自动支付. 自动支付又分为两种:首次支付时签约.纯签约. 首次支付时签约和纯签约在后续周期若需要发起自动扣款时,需要在应用服务中发起申请扣 ...

  7. 调试node接口

    从node服务端到浏览器端,调试node脚本,验证接口功能是否正常. 一.温故知新 https://www.cnblogs.com/camille666/p/nodejs_server.html ht ...

  8. centos7 中查看log_bin是否开启以及开启log_bin

    1.查看是否开启的命名: 在mysql客户端执行:show variables like 'log_bin';      ON:代表开启  OFF:代表未开启 2. 开启log_bin 在配置文件vi ...

  9. DevOps-ISC,CSS,Prometheus,Ansible ,Terraform,zabbix

    https://www.terraform.io/ Terraform Use Infrastructure as Code to provision and manage any cloud, in ...

  10. STM8L052C6T6液晶LCD驱动过程

    首先还是必要的说明,鄙人经验有限,如发现问题还请不吝赐教,反馈到邮箱mr.li.ming@qq.com 使用的液晶屏 单片机引脚 液晶的COM1-COM4分别对应单片机LCD_COM0-LCD_COM ...