代码地址如下:
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实现客户端推送相关推荐

  1. Android集成JPush(极光推送)

    目前只是简单的集成 1.在极光推送官网注册用户 2.创建应用 3.配置包名,获得APPKEY 去设置 输入应用包名 确定然后返回查看APPKEY 3.在应用中集成极光推送 用的jcenter自动集成的 ...

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

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

  3. java集成友盟实现推送

    友盟的文档我是真的有点看不懂,没头没尾的,如果不看sdk真的是理解不了,最终还是给拿下了 友盟官方地址:https://developer.umeng.com/docs 废话不多说直接下载sdk: 下 ...

  4. java 集成小米,华为推送

    小米: 添加依赖或者jar包 jar包下载地址:http://admin.xmpush.xiaomi.com/zh_CN/mipush/downpage/java-http2 工具类: package ...

  5. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  6. SpringBoot 集成 webSocket,实现后台向客户端推送消息

    图文等内容参考链接 SpringBoot2.0集成WebSocket,实现后台向前端推送信息_Moshow郑锴的博客-CSDN博客_springboot websocket WebSocket 简介 ...

  7. java websocket修改为同步_服务端向客户端推送消息技术之websocket的介绍

    websocket的介绍 在讲解WebSocket前,我们先来看看下面这种场景,在HTTP协议下,怎么实现. 需求: 在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图: ​ 当发送私信的时候,如 ...

  8. spring boot 集成socketIo 做消息推送

    spring boot 集成socketIo 做消息推送 项目需求 代码展示 客户端代码 服务端代码 项目需求 后台管理系统用户小铃铛,消息推送功能并展示有多少条消息或者小红点 代码展示 客户端代码 ...

  9. springboot集成webSocket实现实时推送

    springboot集成webSocket实现实时推送 webSocket实现推送 webSocket是什么? 需求说明 websocket集成步骤 pom.xml webSocket实现 自定义处理 ...

最新文章

  1. 前端开发常见问题精选(五)
  2. ACM基础题 - 求矩形个数
  3. JAVA正则表达式:Pattern类与Matcher类详解
  4. 学习linux基础操作,从0开始入门!
  5. 细胞培养中出现黑胶虫污染处理方法
  6. java方法criterion_java – JPA Criteria谓词条件
  7. autocad软件提供的哪些功能可以提高设计效率?_节省80%制图时间:AutoCAD如何有效“手脑”结合,释放创作潜能?...
  8. Nginx 完整安装篇
  9. IE9以及IE9以下,无法执行innerHTML这一操作的解决方法
  10. android 输入法文本选择功能,Android的文本和输入---创建输入法(一)
  11. 用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具
  12. Spring Boot通过@RequestParam接收前端表单传来的数据
  13. OPPO 40万年薪招应届生,狂揽芯片人才;恶意差评小米新手机,一用户被判赔3万元;谷歌开源全同态加密通用转译器|极客头条...
  14. Windows下Hadoop eclipse开发平台搭建
  15. Ka的回溯编程练习 Part4|分配工作与选书
  16. 《上海交通大学饮水思源paper(论文)板实用手册(第二版)》出炉
  17. Redis 集群原理
  18. 一些BIM的相关概念
  19. Office 2016 系列 VOL版本下载
  20. 《咏怀古迹五首·其三》.唐.杜甫

热门文章

  1. 中国科技大学计算机学院叶辉,中国科技大学计算机科学与技术学院导师教师师资介绍简介-黄文超...
  2. c语言考博真题,中国科学院2015年考博英语真题及答案
  3. 6阶群的非平凡子群_离散数学复习笔记
  4. allow_pickle什么意思_如何修复草图算法中“当allow_pickle=False时无法加载对象数组”...
  5. js设置html不可复制,用JS实现用户禁止WEB复制
  6. TCP协议疑难杂症全景解析
  7. Linux中断(interrupt)子系统之二:arch相关的硬件封装层
  8. 【STM32】STM32F4 CAN2只能发送无法接收问题解决
  9. 菜鸟学习笔记:Java提升篇1(容器1——List)
  10. 【教程】一步一步教你如何自定义设置——博客园canvas/JS交互动画背景