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

1  <!-- 极光推送 -->
2         <dependency>
3             <groupId>cn.jpush.api</groupId>
4             <artifactId>jpush-client</artifactId>
5             <version>3.3.12</version>
6         </dependency>

3.2.客户端java代码

代码参考文档:

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

  1 package com.qianxingniwo.client;
  2
  3
  4 import cn.jpush.api.JPushClient;
  5 import cn.jpush.api.push.PushResult;
  6 import cn.jpush.api.push.model.Message;
  7 import cn.jpush.api.push.model.Options;
  8 import cn.jpush.api.push.model.Platform;
  9 import cn.jpush.api.push.model.PushPayload;
 10 import cn.jpush.api.push.model.audience.Audience;
 11 import cn.jpush.api.push.model.notification.AndroidNotification;
 12 import cn.jpush.api.push.model.notification.Notification;
 13 import org.slf4j.Logger;
 14 import org.slf4j.LoggerFactory;
 15
 16 import java.util.ArrayList;
 17 import java.util.List;
 18
 19 /**
 20  * @Copyright (C) 四川千行你我科技有限公司
 21  * @Author: LI DONG PING
 22  * @Date: 7/3 19:11
 23  * @Description:
 24  */
 25
 26 public class JpushClientUtil {
 27     private static final Logger log = LoggerFactory.getLogger(JpushClientUtil.class);
 28
 29     private final static String appKey = "应用的key(非登录账号)";
 30
 31     private final static String masterSecret = "应用的密码(非登录密码)";
 32
 33     private static JPushClient jPushClient = new JPushClient(masterSecret, appKey);
 34
 35
 36     /**
 37      * 发送给所有安卓用户
 38      *
 39      * @param notification_title 通知内容标题
 40      * @param msg_title          消息内容标题
 41      * @param msg_content        消息内容
 42      * @param extrasparam        扩展字段
 43      * @return 0推送失败,1推送成功
 44      */
 45     public static int sendToAllAndroid(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
 46         int result = 0;
 47         try {
 48             PushPayload pushPayload = JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title, msg_title, msg_content, extrasparam, cid);
 49             System.out.println("推送参数:" + pushPayload);
 50             PushResult pushResult = jPushClient.sendPush(pushPayload);
 51             System.out.println("推送结果:" + pushResult);
 52             if (pushResult.getResponseCode() == 200) {
 53                 result = 1;
 54             }
 55         } catch (Exception e) {
 56
 57             e.printStackTrace();
 58         }
 59
 60         return result;
 61     }
 62
 63     /**
 64      * 生产发送条件
 65      *
 66      * @param notification_title
 67      * @param msg_title
 68      * @param msg_content
 69      * @param extrasparam
 70      * @param cid
 71      * @return
 72      */
 73     private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam, String cid) {
 74         log.info("构建推送参数,如推荐平台,接收对象");
 75         //具体参看接口文档
 76         //https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
 77         List list = new ArrayList();
 78         // Audience.tag(list);
 79         //  Audience audience = Audience.alias("112201","112202");//别名推送
 80         // Audience audience = Audience.tag("tag1");
 81         //Audience audience = Audience.all();
 82         // Audience audience = Audience.registrationId("112201", "112202");
 83         Audience audience = Audience.segment("c8f2fff736");
 84         return PushPayload.newBuilder()
 85                 //指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台
 86                 .setPlatform(Platform.android())
 87                 //设置发送消息id
 88                 //  .setCid(cid)
 89                 //指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
 90                 .setAudience(audience)
 91                 // .setAudience(Audience.tag(list))
 92                 //jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发
 93                 .setNotification(Notification.newBuilder()
 94                         //指定当前推送的android通知
 95                         .addPlatformNotification(AndroidNotification.newBuilder()
 96                                 .setAlert(notification_title)
 97                                 .setTitle(notification_title)
 98                                 //此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value)
 99                                 .addExtra("androidNotification extras key", extrasparam)
100                                 .build())
101                         .build()
102                 )
103                 //Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,
104                 // sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的
105                 // [通知与自定义消息有什么区别?]了解通知和自定义消息的区别
106                 .setMessage(Message.newBuilder()
107                         .setMsgContent(msg_content)
108                         .setTitle(msg_title)
109                         .addExtra("message extras key", extrasparam)
110                         .build())
111
112                 .setOptions(Options.newBuilder()
113                         //此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义
114                         .setApnsProduction(false)
115                         //此字段是给开发者自己给推送编号,方便推送者分辨推送记录
116                         .setSendno(1)
117                         //此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒
118                         .setTimeToLive(86400)
119                         .build())
120                 .build();
121     }
122
123     /**
124      * 发送测试
125      *
126      * @param args
127      */
128     public static void main(String[] args) {
129         String num = "-0405-别名";
130         String notification_title = "推送测试-通知标题" + num;
131         String msg_title = "推送测试-内容标题" + num;
132         String msg_content = "我是内容" + num;
133         String extrasparam = "我是扩展的json" + num;
134         String cid = String.valueOf(System.currentTimeMillis());
135         int i = JpushClientUtil.sendToAllAndroid(notification_title, msg_title, msg_content, extrasparam, cid);
136         System.out.println("i=" + i);
137     }
138 }

View Code

3.3.发送测试

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

  

3.3.注意事项

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

  

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

  

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

转载于:https://www.cnblogs.com/newAndHui/p/11132390.html

java服务端集成极光消息推送--详细开发步骤相关推荐

  1. java服务端集成极光消息推送

    极光推送官网地址:https://www.jiguang.cn/ api文档:https://docs.jiguang.cn/jpush/server/push/server_overview/ 1. ...

  2. php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...

    解析php做推送服务端实现ios消息推送 准备工作1.获取手机注册应用的deviceToken(iphone手机注册应用时返回唯一值deviceToken) 2.获取ck.pem文件(做手机端的给) ...

  3. mPaaS 服务端核心组件:消息推送 MPS 架构及流程设计

    0. 前言 根据<开篇 | mPaaS 服务端核心组件体系概述>的介绍,我们已经知道 mPaaS 的 MPS 服务主要提供了专业的移动消息推送方案,可以针对不同的场景提供多种推送类型,满足 ...

  4. React Native集成极光消息推送

    极光IOS消息推送证书一键生成地址:https://onesignal.com/provisionator 一.申请激光账号并创建应用:地址:https://www.jiguang.cn 二.IOS推 ...

  5. ios php 聊天_解析php做推送服务端实现ios消息推送

    准备工作1.获取手机注册应用的deviceToken(iphone手机注册应用时返回唯一值deviceToken) 2.获取ck.pem文件(做手机端的给) 3.获取pass phrase(做手机端的 ...

  6. java服务端集成信鸽推送

    java服务端集成信鸽推送 最近项目需要集成推送功能,突发奇想的选了信鸽推送(可能是最近一直在用阿里的东西),没想到这坑不是一般的多,而且关于详细的集成案例,度娘上真是没一个能入眼的.算了,别的不多说 ...

  7. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  8. 【Java集成小米消息推送(海外版)】

    Java集成小米消息推送(海外版) 注册登录: 小米推送运营中心 提交需要的信息,一般为包名等信息(或直接让Android开发提交) 需要的配置信息 1.App Secret 2.Package na ...

  9. Android接入极光消息推送

    极光消息推送: 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接 主要功能 保持与服务器的长连接,以便消息能够即时推送到达客 ...

最新文章

  1. React 项目中使用Echarts
  2. facebook工具xhprof的安装与使用-分析php执行性能
  3. centos7 致命错误:curl/curl.h:没有那个文件或目录 #include curl/curl.h
  4. [深度学习TF2][RNN-LSTM]文本情感分析包含(数据预处理-训练-预测)
  5. MATLAB模拟导热过程,一维热传导MATLAB模拟.doc
  6. 2021新版外卖CPS 外卖侠CPS小程序
  7. docker安装FastDFS
  8. Python爬虫入门之初遇lxml库
  9. gmp新附录 计算机系统,GMP新附录:计算机系统
  10. 如何在云服务器上安装kali系统
  11. 我的编程之路点滴记录(二)
  12. 局域网即时通讯软件_企业即时通讯软件需要符合哪些要求?
  13. 彻底解决Tensorflow2.0 使用tensorflow_datasets出现unbalanced parenthesis错误
  14. 2021.11.16【读书笔记】丨宏基因组分析流程
  15. 本地管理表空间(LMT)与自动段空间管理(ASSM)概念(未看)
  16. PwC上海AC面经-助理软件工程师(英语)
  17. 三星a7108android 7.0,三星A7108解锁教程 三星A7108解锁Bootloader
  18. [单片机]基于STM32的ONENET云平台操控系统
  19. 【SpringBoot】SpringBoot常用注解
  20. Visual Studio 2015 提示安装包损坏或丢失

热门文章

  1. 人工智能切入垂直领域 风口已至?
  2. 在 Nginx 上开启 https 实践
  3. eclipse调试的时候查看变量出现com.sun.jdi.InvocationException occurred invoking method.
  4. [转]Sql Server参数化查询之where in和like实现详解
  5. 小记安装python的MySQLdb模块
  6. 使用D9的SetFVF无法控制数据字段在内存中的顺序,所有字段的顺序都是固定的。自能选择好用还是不用。...
  7. sql where 1=1 妙用之一方面
  8. idea编译android模块,Android IntelliJ IDEA 14.1:模块没有主类
  9. Java 并发(生产者/消费者 模式)
  10. 数据战略规划_在战略规划期间我应该如何协作?