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大师代发,拒绝转载,转载需要作者授权

原文地址:https://www.cnblogs.com/demodashi/p/9443619.html

时间: 2024-08-01 11:02:43

java集成jpush实现客户端推送的相关文章

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

Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各种功能都实现一遍,解决各种bug各种坑,不得不说,极光推送真坑,大家使用还是要慎重,我们看一下极光推送的官网 https://www.jpush.cn/common/ 推送比较使用,很多软件有需要,所以在这个点拿出来多讲讲,我们本节

pushlet实现服务器端向客户端推送信息

使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过API主动向另外一端推送信息 以下分别给予介绍. 2.   特别注意 在开始测试之前,有三点非常重要,需要实现讲明,否则程序将会无法正常运行: 2.1.     JSP页面上的设定 JSP页面上必须添加以下代码以确保Pushlet能够正确的获得后台服务的地址: <base href="<%=req

SCCM 2016 向客户端推送Endpoint Protection

说道EndPoint Protect大家也许比较陌生,简单来说,它是微软提供的一套免费的企业级杀毒软件. 大家可能在日常的企业中,可能会用到企业级的瑞星,ESET,卡巴斯基,趋势的OfficeScan等等企业级的管理杀毒软件, 他们方便管理,功能齐全,但是企业级的价格昂贵,且很多软件是按照客户端数量来收费. 说说我们今天介绍的 EndPoint Protection, 他就比较符合咱们中国人的购买需求,什么? 那就是免费,便宜!! 价格才是王道! 就像是Hyper-V上的安装免费的Windows

java实现后台服务器消息推送

1.什么是WebSocket WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. 2.实现原理在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为"握手" .在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送.3.优点在以前的消息

基于Tomcat7、Java、WebSocket的服务器推送聊天室 (转)

前言 HTML5 WebSocket实现了服务器与浏览器的双向通讯,双向通讯使服务器消息推送开发更加简单,最常见的就是即时通讯和对信息实时性要求比较高的应用.以前 的服务器消息推送大部分采用的都是“轮询”和“长连接”技术,这两中技术都会对服务器产生相当大的开销,而且实时性不是特别高.WebSocket技术对 只会产生很小的开销,并且实时性特别高.下面就开始讲解如何利用WebSocket技术开发聊天室.在这个实例中,采用的是Tomcat7服务器,每个服 务器对于WebSocket的实现都是不一样的

rsync添加多模块,客户端推送出错!

rsync -avz /data/ rsync_backup[email protected]::nfsbackup/ sending incremental file list ERROR: module is read only rsync error: syntax or usage error (code 1) at main.c(866) [receiver=3.0.6] rsync: read error: Connection reset by peer (104) rsync e

WebSocket 实现服务端给客户端推送消息

目录 代码发布 应用场景 ajax 操作 队列 递归 如何实现服务端主动给客户端推送消息的效果 长轮询(兼容性好) websocker(主流浏览器都支持) 代码验证(了解) 代码发布 服务端主动给客户端推送消息 截至目前为止,我们所写的 web 项目基本都是基于 HTTP 协议的 HTTP 协议有四大特性:无链接 基于 HTTP 协议实现服务端主动给客户端推送消息好像有点麻烦--- 我们都经历过,浏览器打开一个网站不动,网站过一会儿自动弹出消息 再比如网页版本的微信和 qq,我们所有人创建一个群

java 使用 comet4j 主动向客户端推送信息 简单例子

[背景] 今天,一个前端的师弟问我怎样做实时聊天窗口,我毫不犹豫地说:在前台定时访问服务端呀!师弟默默地百度了一番,最后告诉我,有一种技术是后服务端动推送信息给客户端的,这种技术的名字叫comet,我惊呆了,因为完全没听过,赶紧上网搜集资料,耗了一个晚上写了个简单的例子,实现主动向客户端发送信息.说是说主动,其实还是要客户端先献出它的“第一次”,即只要它有先请求你一下,以后你们熟了,你想主动约它就约它! 关于comet技术介绍及其实现原理,可以参考网站 http://www.ibm.com/de

IOS JPush 集成步骤(极光远程推送解决方案,支持android和iOS两个平台)

●  什么是JPush ●  一套远程推送解决方案,支持android和iOS两个平台 ●  它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量.开发复杂 度 ●  更多的信息,可以参考JPush官方网站:https://www.jpush.cn ●  集成iOS SDK的步骤可以参考 ●  http://docs.jpush.cn/pages/viewpage.action?pageId=2621727 JPush的集成步骤 注册帐号,创建应用 填写iOS App的必要信息