JPush是经过考验的大规模APP推送平台,每天推送消息数超过5亿条。 开发者集成SDK后,可以通过调用API推送消息。同时,JPush提供可视化的web端控制台发送通知,统计分析推送效果。 JPush全面支持 Android, iOS, Winphone 三大手机平台。JPush提供四种消息形式:通知,自定义消息,富媒体和本地通知。

通过使用标签,别名,Registration ID 和用户分群,开发者可以向特定的一个或多个用户推送消息。即注册使用极光推送的唯一编码,也就是平时说的APPKEY,以及分配的jpush证书MASTERSECRET。

官方文档上入门资料有几个如下介绍,是使用者必须了解和使用中灵活运用的必要的准备:

标签

为安装了应用程序的用户打上标签,其目的主要是方便开发者根据标签,来批量下发 Push 消息。 可为每个用户打多个标签。 举例: game, old_page, women

别名

每个用户只能指定一个别名。 同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户。
          Android 开发者参考文档:Android 标签和别名 iOS 开发者参考文档:iOS 标签和别名 使用别名和标签推送请参考文档:Push API v3 Audience

Registration ID

客户端初始化 JPush 成功后,JPush 服务端会分配一个 Registration ID,作为此设备的标识(同一个手机不同 APP 的 Registration ID 是不同的)。开发者可以通过指定具体的 Registration ID 来进行对单一设备的推送。

用户分群

用户分群的筛选条件有:标签、地理位置、系统版本、注册时间、活跃用户和在线用户。 比如,开发者可以设置这样的用户分群:位于北京、上海、广州和深圳,并且最近7天在线的用户。 开发者可以通过在控制台设置好用户分群之后,在控制台推送时指定该分群的名称或使用API调用该分群的id发送。

用户分群控制台使用指南:用户分群

*jpush提供消息统计等功能,对数据做专业分析功能

*JPush提供Android,ios,win多平台,可以参看文档那个中集成相应平台SDK

官网官方网站提供

JPush API Java Library

依次按照文档步骤:

1.maven 方式

将下边的依赖条件放到你项目的 maven pom.xml 文件里。

<dependency><groupId>cn.jpush.api</groupId><artifactId>jpush-client</artifactId><version>3.3.7</version>
</dependency>

添加依赖包

依赖包

  • slf4j / log4j (Logger)
  • gson (Google JSON Utils)

<dependency>
        <groupId>cn.jpush.api</groupId>
        <artifactId>jiguang-common</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.1.6.Final</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.7</version>
    </dependency>

<!-- For log4j -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.7</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

2.封装相应的appkey,分配的jpush证书secret

进行推送的关键在于构建一个 PushPayload 对象。以下示例一般的构建对象的用法。

  • 快捷地构建推送对象:所有平台,所有设备,内容为 ALERT 的通知。
   public static PushPayload buildPushObject_all_all_alert() {return PushPayload.alertAll(ALERT);}
  • 构建推送对象:所有平台,推送目标是别名为 "alias1",通知内容为 ALERT。
 public static PushPayload buildPushObject_all_alias_alert() {return PushPayload.newBuilder().setPlatform(Platform.all()).setAudience(Audience.alias("alias1")).setNotification(Notification.alert(ALERT)).build();}
 
  • 构建推送对象:平台是 Android,目标是 tag 为 "tag1" 的设备,内容是 Android 通知 ALERT,并且标题为 TITLE。
public static PushPayload buildPushObject_android_tag_alertWithTitle() {return PushPayload.newBuilder().setPlatform(Platform.android()).setAudience(Audience.tag("tag1")).setNotification(Notification.android(ALERT, TITLE, null)).build();}
 
 
  • 构建推送对象:平台是 iOS,推送目标是 "tag1", "tag_all" 的交集,推送内容同时包括通知与消息 - 通知信息是 ALERT,角标数字为 5,通知声音为 "happy",并且附加字段 from = "JPush";消息内容是 MSG_CONTENT。通知是 APNs 推送通道的,消息是 JPush 应用内消息通道的。APNs 的推送环境是“生产”(如果不显式设置的话,Library 会默认指定为开发)
   public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {return PushPayload.newBuilder().setPlatform(Platform.ios()).setAudience(Audience.tag_and("tag1", "tag_all")).setNotification(Notification.newBuilder().addPlatformNotification(IosNotification.newBuilder().setAlert(ALERT).setBadge(5).setSound("happy").addExtra("from", "JPush").build()).build()).setMessage(Message.content(MSG_CONTENT)).setOptions(Options.newBuilder().setApnsProduction(true).build()).build();}
 
  • 构建推送对象:平台是 Andorid 与 iOS,推送目标是 ("tag1" 与 "tag2" 的并集)交("alias1" 与 "alias2" 的并集),推送内容是 - 内容为 MSG_CONTENT 的消息,并且附加字段 from = JPu
public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {return PushPayload.newBuilder().setPlatform(Platform.android_ios()).setAudience(Audience.newBuilder().addAudienceTarget(AudienceTarget.tag("tag1", "tag2")).addAudienceTarget(AudienceTarget.alias("alias1", "alias2")).build()).setMessage(Message.newBuilder().setMsgContent(MSG_CONTENT).addExtra("from", "JPush").build()).build();}

DEMO:

 /*** 发送给所有安卓用户* @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, Stringextrasparam) {int result = 0;try {PushPayload pushPayload= JpushMessageUtil.buildPushObject_android_all_alertWithTitle(notification_title,msg_title,msg_content,extrasparam);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;}
/*** 发送给所有IOS用户** @param notification_title 通知内容标题* @param msg_title          消息内容标题* @param msg_content        消息内容* @param extrasparam        扩展字段* @return 0推送失败,1推送成功*/public static int sendToAllIos(String notification_title, String msg_title, String msg_content, Stringextrasparam) {int result = 0;int ifNum  =200;try {PushPayload pushPayload = JpushMessageUtil.buildPushObject_ios_all_alertWithTitle(notification_title,msg_title, msg_content, extrasparam);System.out.println(pushPayload);PushResult pushResult = jPushClient.sendPush(pushPayload);System.out.println(pushResult);if (pushResult.getResponseCode() == ifNum) {result = 1;}} catch (Exception e) {e.printStackTrace();}return result;}
 /*** 发送给所有用户* @param notification_title 通知内容标题* @param msg_title 消息内容标题* @param msg_content 消息内容* @param extrasparam 扩展字段* @return 0推送失败,1推送成功*/public static int sendToAll( String notification_title, String msg_title, String msg_content, Stringextrasparam) {int result = 0;try {PushPayload pushPayload= JpushMessageUtil.buildPushObject_android_and_ios(notification_title,msg_title,msg_content,extrasparam);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;}

集成推送方法:

 private static PushPayload buildPushObject_ios_all_alertWithTitle(String notification_title, String msg_title,String msg_content, String extrasparam) {System.out.println("----------buildPushObject_ios_registrationId_alertWithTitle");return PushPayload.newBuilder()//指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台.setPlatform(Platform.ios())//指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id.setAudience(Audience.all())//jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发.setNotification(Notification.newBuilder()//指定当前推送的android通知.addPlatformNotification(IosNotification.newBuilder()//传一个IosAlert对象,指定apns title、title、subtitle等.setAlert(notification_title)//直接传alert//此项是指定此推送的badge自动加1.incrBadge(1)//此字段的值default表示系统默认声音;传sound.caf表示此推送以项目里面打包的sound.caf声音来提醒,// 如果系统没有此音频则以系统默认声音提醒;此字段如果传空字符串,iOS9及以上的系统是无声音提醒,以下的系统是默认声音.setSound("sound.caf")//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value).addExtra("iosNotification extras key", extrasparam)//此项说明此推送是一个background推送,想了解background看:http://docs.jpush// .io/client/ios_tutorials/#ios-7-background-remote-notification// .setContentAvailable(true).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();}

导入本项目

  • 可以采用 git clone https://github.com/jpush/jpush-api-java-client.git jpush-api-src 命令下载源码
  • 如果不使用git,请到Release页面下载源码包并解压
  • 采用eclipse导入下载的源码工程,推荐采用maven的方式,方便依赖包的管理
  • 假如采用导入普通项目的方式,项目报错,检查Build Path,Libraries
  • 依赖jar包都在libs目录下可以找到,没有加入的请添加到Build Path,Libraries
  • 默认采用了log4j做日志框架,开发者可根据自己需求替换logback、commons-logging等日志框架
  • 极个别情况下,如果test目录报错,请手动添加test的依赖jar包mockwebserver-2.0.0.jar、okhttp-2.0.0.jar、okio-1.0.0.jar
  • 开发者需要注意,将本项目的编码格式设置为UTF-8

JPush极光消息推送APP-start相关推荐

  1. Android接入极光消息推送

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

  2. java服务端集成极光消息推送--详细开发步骤

    1.极光推送账号准备 要使用极光消息推送必须先在官方网站上注册账号,并添加应用. 产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/ 注册开发者账号 ...

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

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

  4. android极光推送在app开启后,在ios上,app后台运行时,如何在极光消息推送过来时,运行一段自定义的代码(请求,语音播报等)...

    通常情况下,app在ios上后台运行时,发送的推送无法被app监听,并执行自定义操作. 这个时候,需要发起Remote Notifications(ios7开始支持后台) ios7和ios6对比: 可 ...

  5. APP极光消息推送无法接收,部分手机设置

    https://docs.jiguang.cn//jpush/client/Android/android_faq/ 由于第三方 ROM 的管理软件需要用户手动操作 小米[ MIUI ] 自启动管理: ...

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

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

  7. apiCloud jpush java 消息推送使用

    1.apicloud创建项目,以创建项目的可略过此步骤 2.集成jpush模块 3.生成证书并复制包名(极光官网创建项目时会用到) 4.进入极光官网http://www.jiguang.cn 注册成为 ...

  8. openfire消息通知推送_APP消息推送功能之前端后台设计

    APP消息推送功能之前端后台设计 最近有不少小伙伴问APP消息推送功能,前端.后台如何设计的?消息系统的架构是什么样的?最近刚好做到后台消息推送这块,简单谈谈个人心得,欢迎拍砖. 消息推送是让自己的用 ...

  9. 手机消息推送之web端开发

    最近的项目APP端需要添加消息推送任务.于是果断选择了极光消息推送.最最重要的原因就是开源免费. 极光开发者服务官网:https://www.jiguang.cn/

最新文章

  1. big endian and little endian
  2. oppo售后解锁工具_Realme X50/X50 Pro 5G版解锁BL获取完美ROOT权限全套详细刷机
  3. C#趣味程序---百鸡百钱
  4. php变量前下滑_PHP变量
  5. Elasticsearch是如何实现master选举的?
  6. kafka java客户端消息的分区与缓存发送
  7. 三段诡异的JavaScript代码,结果出乎意料
  8. 如何使用jQuery将事件附加到动态HTML元素? [重复]
  9. [转] Windows Server 2012 Beta (Hyper-V 3.0) VM Replica與Live Migration Winout Shared Storage
  10. c# html正则,c# 使用正则解析html
  11. C语言图形库——easyx的使用
  12. 普通话测试软件字体怎么调整,普通话测试方案
  13. Unity Shader Alpha测试
  14. 关于谷歌的一个简单工具以及chrome浏览器更新方法
  15. OpenERP 模块动态加载原理及启动代码分析
  16. 移动修改服务器密码是什么,移动服务器密码
  17. 进入网页页面的开发者模式——三种方式
  18. 老婆的美丽背影------俞敏洪
  19. 介绍一款Excel数据收集软件,简单好用
  20. Lawliet|C语言——求斐波那契函数第N项

热门文章

  1. 微信小程序 -- 自定义组件component并引入。
  2. k8s滚动升级_kubernetes滚动更新
  3. android录制10秒视频教程,快手怎样录制60秒视频 快手怎么录长视频教程
  4. Vagrant开发环境搭建
  5. B2B网站(结合web2.0)策划提纲(转载自:hi.baidu.com/yygyd)
  6. 爱情中的决策树和贝叶斯
  7. 防火墙实验二——实现域间、域内双向NAT、双机热备实验
  8. ERP信息化管理软件的财务应用价值
  9. Microsoft Office 2016 专业增强版官方原版镜像下载
  10. 7天刷完LeetCode是什么水平?能拿到什么水平的offer