场景

Android中集成极光推送实现推送消息通知与根据别名指定推送附示例代码下载:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114016288

若失效,访问下面链接

https://www.cnblogs.com/badaoliumangqizhi/p/14440653.html

在上面Android中集成Jpush后,给所有Android设备推送消息以及通过别名给指定都是通过Jpush的

开发者后台进行推送消息,如果在代码中怎样进行消息推送。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先新建一个Maven项目

在pom.xml中引入Jpush和log4g相关依赖

    <dependencies><!-- 极光推送 --><dependency><groupId>cn.jpush.api</groupId><artifactId>jpush-client</artifactId><version>3.4.8</version></dependency><dependency><groupId>org.msgpack</groupId><artifactId>msgpack</artifactId><version>0.6.12</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>

然后新建包,包下新建工具类JpushClientUtil

package com.badao.jpushdemo;import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;public class JpushClientUtil {private final static String appKey = "Jpush上应用的Appkey";private final static String masterSecret = "Jpush上应用的secret";private static JPushClient jPushClient = new JPushClient(masterSecret,appKey);/*** 推送给设备标识参数的用户* @param registrationId 设备标识* @param notification_title 通知内容标题* @param msg_title 消息内容标题* @param msg_content 消息内容* @param extrasparam1 扩展字段1* @param extrasparam2 扩展字段2* @return 0推送失败,1推送成功*/public static int sendToRegistrationId( String registrationId,String notification_title, String msg_title, String msg_content, String extrasparam1,String extrasparam2) {int result = 0;try {PushPayload pushPayload= JpushClientUtil.buildPushObject_all_registrationId_alertWithTitle(registrationId,notification_title,msg_title,msg_content,extrasparam1,extrasparam2);System.out.println(pushPayload);PushResult pushResult=jPushClient.sendPush(pushPayload);System.out.println(pushResult);if(pushResult.getResponseCode()==200){result=1;}} catch (APIConnectionException e) {e.printStackTrace();} catch (APIRequestException e) {e.printStackTrace();}return result;}/*** 发送给安卓指定用户* @param notification_title 通知内容标题* @param msg_title 消息内容标题* @param msg_content 消息内容* @param extrasparam 附加参数* @param alias 推送别名* @return 0推送失败,1推送成功*/public static int sendToOneAndroid( String notification_title, String msg_title, String msg_content, String extrasparam, String alias) {int result = 0;try {PushPayload pushPayload= JpushClientUtil.buildPushObject_android_all_alertWithTitle(notification_title,msg_title,msg_content,extrasparam,null,alias);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;}/*** 发送给所有安卓用户* @param notification_title 通知内容标题* @param msg_title 消息内容标题* @param msg_content 消息内容* @return 0推送失败,1推送成功*/public static int sendToAllAndroid( String notification_title, String msg_title, String msg_content, String extrasparam) {int result = 0;try {PushPayload pushPayload= JpushClientUtil.buildPushObject_android_all_alertWithTitleAll(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, String extrasparam) {int result = 0;try {PushPayload pushPayload= JpushClientUtil.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()==200){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, String extrasparam) {int result = 0;try {PushPayload pushPayload= JpushClientUtil.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;}public static PushPayload buildPushObject_android_and_ios(String notification_title, String msg_title, String msg_content, String extrasparam) {return PushPayload.newBuilder().setPlatform(Platform.android_ios()).setAudience(Audience.all()).setNotification(Notification.newBuilder().setAlert(notification_title).addPlatformNotification(AndroidNotification.newBuilder().setAlert(notification_title).setTitle(notification_title)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value).addExtra("androidNotification extras key",extrasparam).build()).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();}private static PushPayload buildPushObject_all_registrationId_alertWithTitle(String alias1, String notification_title, String msg_title, String msg_content, String extrasparam1, String extrasparam2) {System.out.println("----------buildPushObject_all_all_alert");//创建一个IosAlert对象,可指定APNs的alert、title等字段//IosAlert iosAlert =  IosAlert.newBuilder().setTitleAndBody("title", "alert body").build();return PushPayload.newBuilder()//指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台.setPlatform(Platform.android())//指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id
//                .setAudience(Audience.registrationId(registrationId)).setAudience(Audience.alias(alias1))//jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发.setNotification(Notification.newBuilder()//指定当前推送的android通知.addPlatformNotification(AndroidNotification.newBuilder().setAlert(msg_content)
//                                .setTitle(notification_title).setTitle(msg_title)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value).addExtra("id",extrasparam1).addExtra("type",extrasparam2).build())//指定当前推送的iOS通知
//                        .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",extrasparam1)
//                                //此项说明此推送是一个background推送,想了解background看:http://docs.jpush.io/client/ios_tutorials/#ios-7-background-remote-notification
//                                //取消此注释,消息推送时ios将无法在锁屏情况接收
//                                // .setContentAvailable(true)
//
//                                .build()).build())//Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,// sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的// [通知与自定义消息有什么区别?]了解通知和自定义消息的区别.setMessage(Message.newBuilder().setMsgContent(msg_content).setTitle(msg_title).addExtra("id",extrasparam1).addExtra("type",extrasparam2).build()).setOptions(Options.newBuilder()//此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义.setApnsProduction(false)//此字段是给开发者自己给推送编号,方便推送者分辨推送记录.setSendno(1)//此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天;.setTimeToLive(86400).build()).build();}private static PushPayload buildPushObject_android_all_alertWithTitle(String notification_title, String msg_title, String msg_content, String extrasparam, String type, String value) {System.out.println("----------buildPushObject_android_registrationId_alertWithTitle");return PushPayload.newBuilder()//指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台.setPlatform(Platform.android())//指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id//根据别名推送.setAudience(Audience.alias(value))//jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发.setNotification(Notification.newBuilder()//指定当前推送的android通知.addPlatformNotification(AndroidNotification.newBuilder().setAlert(msg_content).setTitle(msg_title)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value).addExtra("type",extrasparam).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).addExtra("status",extrasparam).build()).setOptions(Options.newBuilder()//此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义.setApnsProduction(false)//此字段是给开发者自己给推送编号,方便推送者分辨推送记录.setSendno(1)//此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒.setTimeToLive(86400).build()).build();}private static PushPayload buildPushObject_android_all_alertWithTitleAll(String notification_title, String msg_title, String msg_content, String extrasparam) {System.out.println("----------buildPushObject_android_registrationId_alertWithTitle");return PushPayload.newBuilder()//指定要推送的平台,all代表当前应用配置了的所有平台,也可以传android等具体平台.setPlatform(Platform.android())//指定推送的接收对象,all代表所有人,也可以指定已经设置成功的tag或alias或该应应用客户端调用接口获取到的registration id//               //Audience设置为all,说明采用广播方式推送,所有用户都可以接收到.setAudience(Audience.all())//jpush的通知,android的由jpush直接下发,iOS的由apns服务器下发,Winphone的由mpns下发.setNotification(Notification.newBuilder()//指定当前推送的android通知.addPlatformNotification(AndroidNotification.newBuilder().setAlert(msg_content).setTitle(msg_title)//此字段为透传字段,不会显示在通知栏。用户可以通过此字段来做一些定制需求,如特定的key传要指定跳转的页面(value).addExtra("type",extrasparam).build()).build())//Platform指定了哪些平台就会像指定平台中符合推送条件的设备进行推送。 jpush的自定义消息,// sdk默认不做任何处理,不会有通知提示。建议看文档http://docs.jpush.io/guideline/faq/的// [通知与自定义消息有什么区别?]了解通知和自定义消息的区别.setMessage(Message.newBuilder().setMsgContent(msg_content).setTitle(msg_title).addExtra("status",extrasparam).build()).setOptions(Options.newBuilder()//此字段的值是用来指定本推送要推送的apns环境,false表示开发,true表示生产;对android和自定义消息无意义.setApnsProduction(false)//此字段是给开发者自己给推送编号,方便推送者分辨推送记录.setSendno(1)//此字段的值是用来指定本推送的离线保存时长,如果不传此字段则默认保存一天,最多指定保留十天,单位为秒.setTimeToLive(86400).build()).build();}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();}public static void main(String[] args){/*        if(JpushClientUtil.sendToAllAndroid("推送给所有Android用户","公众号","霸道的程序猿","101")==1){System.out.println("推送给所有Android用户success");}*/if(JpushClientUtil.sendToOneAndroid("推送给指定Android用户","公众号","指定推送公众号:霸道的程序猿","102", "badaodechengxvyuan")==1){System.out.println("推送给指定Android用户success");}}
}

然后这个工具类中提供了一个main方法用来进行推送测试。

首先将上面工具类中的Appkey和secret修改为Jpush开发者平台上应用对应的数据。

然后先打开推送给所有安卓用户的测试方法,运行

然后在App中

会收到推送,并且在方法回调中

然后点击App上的注册别名按钮,给当前Android设备添加别名,然后在工具类main方法中放开指定设备推送的代码

然后在App端

Java端示例代码下载

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/15450452

Android端示例代码下载

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/15435342

Java中集成极光推送实现给Android提送消息通知(附代码下载)相关推荐

  1. flutter应用开发中集成极光推送(flutter极光推送第一篇)

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 精通点的可以查看这里 精述 Flutter 从入门实践到开发一个APP之UI基础篇 视频 flutter从入 ...

  2. java集成极光推送(仅仅极光注册Id字段发送)

    添加依赖 在pom.xml文件的<dependencies></dependencies>标签中,加入下面依赖,且刷新依赖 <!-- 使用极光推送的jar包 --> ...

  3. 集成极光推送遇到的问题

    文章目录 解决1: 2.您只需要将minsdkversion更改为21而不是16 这个问题有两种不同的答案,但我认为最合适的是第二种解决方案. 这是Google的官方解释: 原文: 翻译:对Andro ...

  4. 极光推送指定用户推送_干货|SpringBoot集成极光推送完整实现代码(建议收藏)...

    工作中经常会遇到服务器向App推送消息的需求,一般企业中选择用极光推送的比较多,在集成极光时发现极光的文档并不完整,网上的文章也很多不能直接使用,这里列出我在工作中集成极光的全部代码,只需要按照如下代 ...

  5. ionic4 集成极光推送jpush

    ionic4 集成极光推送jpush 1. 在极光官网注册.登录.创建应用 极光推送官网 应用包名要与config.xml一致 2.安装插件 ionic cordova plugin add jpus ...

  6. 极光推送 简书android,(Android)react-native集成极光推送

    在Android中使用reactnative集成极光推送步骤如下: (1)在AndroidManifest中声明网络权限,获取包名到极光推送官网添加应用,获取AppKey,该key需要注册到应用中以获 ...

  7. vmei-day04-Jcenter方式集成极光推送

    今天主要写了一个小demo来集成极光推送的功能到项目 第一步,先看proj_gradle配置: buildscript {repositories {jcenter()}dependencies {c ...

  8. 极光推送 android 最新,Android——快速集成极光推送-Go语言中文社区

    集成极光推送 1,首先肯定是注册,添加应用 2,开始自动集成比手动集成简单第一步 在 build.gradle defaultConfig { multiDexEnabledtrue applicat ...

  9. 李洪强iOS之集成极光推送二iOS 证书 设置指南

    李洪强iOS之集成极光推送二iOS 证书 设置指南 创建应用程序ID 登陆 iOS Dev Center 选择进入iOS Provisioning Portal. 在 iOS Provisioning ...

最新文章

  1. Java并发编程之ThreadLocal源码分析
  2. 关于ABAP流程处理的一些命令的说明(stop,exit,return,check,reject)
  3. 解决devenv.exe应用程序错误,应用程序发生异常
  4. python zipfile_python zipfile模块
  5. 《java程序设计》结对编程-四则运算整体总结
  6. AspxGridView 主子表设置
  7. 专科python应届生工资多少-应届毕业生自述面试15K月薪的Python后端开发经历,希望对你有用...
  8. Java学习笔记基础(下)
  9. 数据库相关概念与编程使用方式
  10. android真机调试
  11. 经典莱斯康混响插件LX480 Complete限时43%OFF
  12. Java面试题十二:Java内存模型,h5移动端开发面试题
  13. 鲁棒偏最小二乘法概况
  14. 原型工具Axure6.5的使用
  15. 从招聘信息来看,小米、爱奇艺、360甚至芒果TV都要做VR了
  16. PCB之分布电感分布电容
  17. php语言开始和结束分别为,PHP语言参考
  18. HEIC文件怎么打开,如何将HEIC格式转换为JPG格式
  19. 我的扫地机器人让我了解机器人过程自动化(RPA)
  20. 总结下自己的入门学黑之路

热门文章

  1. 搭建FastDFS分布式文件方式一(Docker版本)
  2. Graph Theory 图论 贪心 栈 思维
  3. Kanade Doesn’t Want to Learn CG 模拟,读题训练,临界
  4. Mocha and Hiking 模拟
  5. 蓝桥杯Java历年真题与答案_蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的)...
  6. 信阳哪些技校有学计算机的,2018年信阳十大技校排名 排名前十的学校有哪些
  7. spring mvc @RequestBody @ResponseBody 解析流程
  8. java mvc 实际分层_SpringMVC体系分层模式原理图解
  9. C语言函数sscanf()的用法
  10. android任务栈的作用,Android 启动模式以及任务栈