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. springboot vue前后端分离 跨跨域配置

    public class CustomCorsFilter extends OncePerRequestFilter { @Override protected void doFilterIntern ...

  2. 微信支付:URL未注册问题

    起因:一个项目已经做好了,微信支付也调通的,域名 www.xxxx.com ,某天客户需要换域名,改为weixin.xxxx.com, 原先的www转向客户自己的官网,结果换了之后,发现微信支付出错: ...

  3. CentOS使用yum安装最新版nginx步骤

    sudo yum install yum-utilsvi  /etc/yum.repos.d/nginx.repo 输入: [nginx-stable]name=nginx stable repoba ...

  4. Thinkphp5 实现动态模板主题多个模板切换

    在项目开发过程中会遇到一个网站有不同风格,本文详细介绍Thinkphp5 实现模板主题多个模板切换 一.在Config中配置view_path模板路径代码如下 1 2 3 4 5 6 7 8 9 10 ...

  5. 泡泡一分钟:Context-Aware Modelling for Augmented Reality Display Behaviour

    张宁 Context-Aware Modelling for Augmented Reality Display Behaviour链接:https://pan.baidu.com/s/1RpX6kt ...

  6. LeetCode 108. Convert Sorted Array to Binary Search Tree (将有序数组转换成BST)

    108. Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascendin ...

  7. MathML

    MathML https://developer.mozilla.org/en-US/docs/Web/MathML/Examples/MathML_Pythagorean_Theorem Mathe ...

  8. Flutter入门(一)

    Flutter的sdk地址https://flutter.dev/docs/development/tools/sdk/releases 如果网络不能翻墙,只需要在环境变量里增加如下 FLUTTER_ ...

  9. axios get,post请求时带headers

    axios post请求时带headers: axios.post("http://xxx.com/xxx/xxx/xxx?", { 'queslistid': this.kemu ...

  10. 浅谈PageRank

    浅谈PageRank 2017-04-25 18:00:09 guoziqing506 阅读数 17873更多https://blog.csdn.net/guoziqing506/article/de ...