java集成jpush实现客户端推送
代码地址如下:
http://www.demodashi.com/demo/13700.html
前言
java 集成jpush 实现客户端推送
###一、准备工作
开发环境:
jdk1.6
Eclipse Luna Service Release 1 (4.4.1)
运行环境:
eclipse
###二、jpush 推送说明
jpush推送是国内的服务厂商提供的一站式push服务(同时支持iOS、android),后面也加入了即时通讯的能力供app使用。致力于打造简单、可靠、价格有竞争力的服务(简单功能全免费,高级版才收费),让应用开发商可以聚焦业务开发,push相关的技术实现全部通过极光推送来解决,仅需调用极光推送的api即可
###三、推送原理
安卓客户端推送原理
JPush WP Push 包括 1个部分,MPNs 推送(代理)。
红色部分是 MPNs 推送,JPush 代理开发者的应用,向微软 MPNs 服务器推送。由 Microsoft MPNs Server 推送到 WP 设备上。
蓝色部分是 JPush 应用内推送部分,但目前暂不支持应用内消息。
苹果客户端推送原理
从图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息。
红色部分是 APNs 推送,JPush 代理开发者的应用(需要基于开发者提供的应用证书),向苹果 APNs 服务器推送。由 APNs Server 推送到 iOS 设备上。
蓝色部分是 JPush 应用内推送部分,即 App 启动时,内嵌的 JPush SDK 会开启长连接到 JPush Server,从而 JPush Server 可以推送消息到 App 里。
###四、代码结构
mysql 表结构
###五、服务端程序实现
1、推送基本分为安卓与苹果。
Android("android"),
IOS("ios"),
WinPhone("winphone");private final String value;private DeviceType(final String value) {this.value = value;
}public String value() {return this.value;
}
2、定义推送接口推送单个用户、多个用户、单个设备、整个app。
public void pushToUser(String type,String userId, PushEntity pushEntity);public void pushToUserList(String type,List<String> userIdList, PushEntity pushEntity);public void pushToDevice(String type,List<String> deviceTokenList, PushEntity pushEntity);public void pushToApp(String type,PushEntity pushEntity);
3、推送环境区分、安卓不区分开发与生产环境,苹果需要区分。
List<String[]> JpushInfoList = MobilePushService.getJpushKeyInfo(type,pushEntity.getJpushApiMasterSecret(),pushEntity.getJpushAppKey());// 如果配置mobile.notify.ios.production=false,则是开发模式boolean iosMode = true;// 设置平台payloadBuilder.setPlatform(deviceType.equals(DeviceType.IOS) ? Platform.ios() : Platform.android());Map<String, Object> extrasMap = new HashMap<String, Object>();
4、集成jpush api 实现推送功能。
try {JPushClient jPushClient = new JPushClient(jpushInfo[0], jpushInfo[1], iosMode,(pushEntity.getJpushTimeToLive() == null ? 86400 : pushEntity.getJpushTimeToLive()));jPushClient.sendPush(pushPayload);} catch (Exception e) {// 个推时如果手机端没有注册用户,不打错误日志if (e.getMessage().indexOf("\"code\": 1011") == -1) {logger.error("JPUSH推送消息时发生异常:[" + e.getMessage() + "]", e);}}
5、通过mysql配置jpush key与secret 动态更换配置。
// 如果设定了自定义key,则使用自定义,否则进行数据库查询if (StringUtils.isNotBlank(apiMasterSecret) && StringUtils.isNotBlank(appKey)) {resultA.add(new String[] { apiMasterSecret, appKey });} else {resultList = CptNotifyJpush.dao.findCptNotifyJpush(type);if (resultList != null && resultList.size() > 0) {for (CptNotifyJpush result : resultList) {resultA.add(new String[] {result.getStr("api_master_secret"),result.getStr("app_key") });}}}
###六、客户端集成步骤
step1:去极光推送注册账号:https://www.jpush.cn/,并注册应用。
step2:上传apns证书到极光,apns证书的生成步骤参考:
http://docs.jpush.io/client/ios_tutorials/#ios_1
仔细阅读该文档,上传成功后控制台的应用详情里面会显示“已验证”,说明证书有效。
step3:对你的app工程重新配置,使用新的支持apns的provision文件(若此前应用已支持apns,可以不用换),否则后面无法正常获得device token.
step4:集成其sdk,包括一个.a和一个.h文件,最新版本大约是2.1,其sdk中也包含了demo,注意在2.1版本之前需要创建一个plist文件用于保存秘钥信息等,在最新版本不需要此文件。
sdk下载地址:https://www.jpush.cn/common/products#product-download
step5:主要代码修改如下:
appdelegate.h:
static NSString *appKey = @“Your_app_key”;
static NSString *channel = @“Your_channel_identifier”;
static BOOL isProduction = NO;
###七、运行方法
public static void main(String args[]){JPushService pushService=new JPushService();PushEntity pushEntity=new PushEntity();//修改密钥pushEntity.setJpushApiMasterSecret("0a35d2fabea1df2dfc36d32l");pushEntity.setJpushAppKey("a344debcf41e5542b291d52f");pushEntity.setMsgContent("test jpush");pushEntity.setMsgTitle("test jpush");pushService.sendNotification2App("",pushEntity, DeviceType.IOS);} pushEntity.setJpushAppKey("a344debcf41e5542b291d52f");pushEntity.setMsgContent("test jpush");pushEntity.setMsgTitle("test jpush");pushService.sendNotification2App("",pushEntity, DeviceType.IOS);java集成jpush实现客户端推送
代码地址如下:
http://www.demodashi.com/demo/13700.html
注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权
java集成jpush实现客户端推送相关推荐
- Android集成JPush(极光推送)
目前只是简单的集成 1.在极光推送官网注册用户 2.创建应用 3.配置包名,获得APPKEY 去设置 输入应用包名 确定然后返回查看APPKEY 3.在应用中集成极光推送 用的jcenter自动集成的 ...
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- java集成友盟实现推送
友盟的文档我是真的有点看不懂,没头没尾的,如果不看sdk真的是理解不了,最终还是给拿下了 友盟官方地址:https://developer.umeng.com/docs 废话不多说直接下载sdk: 下 ...
- java 集成小米,华为推送
小米: 添加依赖或者jar包 jar包下载地址:http://admin.xmpush.xiaomi.com/zh_CN/mipush/downpage/java-http2 工具类: package ...
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...
- SpringBoot 集成 webSocket,实现后台向客户端推送消息
图文等内容参考链接 SpringBoot2.0集成WebSocket,实现后台向前端推送信息_Moshow郑锴的博客-CSDN博客_springboot websocket WebSocket 简介 ...
- java websocket修改为同步_服务端向客户端推送消息技术之websocket的介绍
websocket的介绍 在讲解WebSocket前,我们先来看看下面这种场景,在HTTP协议下,怎么实现. 需求: 在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图: 当发送私信的时候,如 ...
- spring boot 集成socketIo 做消息推送
spring boot 集成socketIo 做消息推送 项目需求 代码展示 客户端代码 服务端代码 项目需求 后台管理系统用户小铃铛,消息推送功能并展示有多少条消息或者小红点 代码展示 客户端代码 ...
- springboot集成webSocket实现实时推送
springboot集成webSocket实现实时推送 webSocket实现推送 webSocket是什么? 需求说明 websocket集成步骤 pom.xml webSocket实现 自定义处理 ...
最新文章
- 前端开发常见问题精选(五)
- ACM基础题 - 求矩形个数
- JAVA正则表达式:Pattern类与Matcher类详解
- 学习linux基础操作,从0开始入门!
- 细胞培养中出现黑胶虫污染处理方法
- java方法criterion_java – JPA Criteria谓词条件
- autocad软件提供的哪些功能可以提高设计效率?_节省80%制图时间:AutoCAD如何有效“手脑”结合,释放创作潜能?...
- Nginx 完整安装篇
- IE9以及IE9以下,无法执行innerHTML这一操作的解决方法
- android 输入法文本选择功能,Android的文本和输入---创建输入法(一)
- 用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具
- Spring Boot通过@RequestParam接收前端表单传来的数据
- OPPO 40万年薪招应届生,狂揽芯片人才;恶意差评小米新手机,一用户被判赔3万元;谷歌开源全同态加密通用转译器|极客头条...
- Windows下Hadoop eclipse开发平台搭建
- Ka的回溯编程练习 Part4|分配工作与选书
- 《上海交通大学饮水思源paper(论文)板实用手册(第二版)》出炉
- Redis 集群原理
- 一些BIM的相关概念
- Office 2016 系列 VOL版本下载
- 《咏怀古迹五首·其三》.唐.杜甫
热门文章
- 中国科技大学计算机学院叶辉,中国科技大学计算机科学与技术学院导师教师师资介绍简介-黄文超...
- c语言考博真题,中国科学院2015年考博英语真题及答案
- 6阶群的非平凡子群_离散数学复习笔记
- allow_pickle什么意思_如何修复草图算法中“当allow_pickle=False时无法加载对象数组”...
- js设置html不可复制,用JS实现用户禁止WEB复制
- TCP协议疑难杂症全景解析
- Linux中断(interrupt)子系统之二:arch相关的硬件封装层
- 【STM32】STM32F4 CAN2只能发送无法接收问题解决
- 菜鸟学习笔记:Java提升篇1(容器1——List)
- 【教程】一步一步教你如何自定义设置——博客园canvas/JS交互动画背景