目前主流的推送,jpush,友盟,小米等等,楼主这里用的是小米,当然需要先看小米的api

小米提供的服务端api地址:http://dev.xiaomi.com/doc/?p=533#d5e15

客户端集成好sdk,服务器导入jar包,调小米的方法,然后做个后台界面供运维使用:

一个第三方的东西,其实做一遍跟做一百遍是一个意思,直接贴代码:

/*** 仅仅推送iOS* @param context* @param timeToSend* @return* @throws IOException* @throws ParseException*/public static boolean sendIOSAll(String context,Date timeToSend,Map<String, String> extra)throws IOException, ParseException {sender = new Sender(appSecret);Result result = sender.broadcastAll(iosMessage(context,timeToSend,extra), maxRetryTimes);return resultHandle(result);}/*** iOS推送* @param context 推送内容* @param timeToSend  定时发送消息。timeToSend是以毫秒为单位的时间戳。注:仅支持七天内的定时消息。* @return*/protected static Message iosMessage(String context,Date timeToSend,Map<String, String> extra) {return iosMessage(context, null, null,timeToSend, extra);}/*** iOS开始推送* @param context* @param soundType 可选项,自定义消息铃声。* @param badge 可选项,自定义通知数字角标。* @param timeToSend* @param extras 可选项,自定义键值对。控制客户端的行为。注:至多可以设置10个key-value键值对。* @return*/protected static Message iosMessage(String context, String soundType,Integer badge, Date timeToSend, Map<String, String> extras) {IOSBuilder builderIOS = IOSBuilder().description(context);if (StringUtils.isNotEmpty(soundType)){builderIOS.soundURL(soundType); }if (badge != null){builderIOS.badge(badge);}if(timeToSend != null){builderIOS.timeToSend(timeToSend.getTime());}if (extras != null && !extras.isEmpty()) {for (Map.Entry<String, String> entry : extras.entrySet()) {builderIOS.extra(entry.getKey(), entry.getValue());}}return builderIOS.build();}
/*** 仅仅推送Android* @param title* @param context* @param timeToSend* @return* @throws IOException* @throws ParseException*/public static boolean sendAndroidAll(String title, String context,Date timeToSend,Map<String, String> map,String alias)throws IOException, ParseException {sender = new Sender(appSecretAndroid);Result result = null;if(!StringUtils.isEmpty(alias)){//单个推送:类似iOS的测试推送result = sender.sendToAlias(androidMessage(title, context,timeToSend,map), alias, maxRetryTimes);}else{result = sender.broadcastAll(androidMessage(title, context,timeToSend,map),maxRetryTimes);}return resultHandle(result);}/*** Android推送* @param title* @param context* @param timeToSend* @return*/protected static Message androidMessage(String title, String context,Date timeToSend,  Map<String, String> extras) {return androidMessage(title, context, context,timeToSend,extras);}/*** Android开始推送* @param title* @param payload* @param context* @param timeToSend* @param extras* @return*/protected static Message androidMessage(String title, String payload,String context,Date timeToSend,  Map<String, String> extras) {Builder builder = builder().title(title).payload(payload).description(context).restrictedPackageName(packageName).passThrough(PASSDEFAULT).notifyType(DEFAULT);if(timeToSend != null){builder.timeToSend(timeToSend.getTime());}if (extras != null && !extras.isEmpty()) {for (Map.Entry<String, String> entry : extras.entrySet()) {builder.extra(entry.getKey(), entry.getValue());}}return builder.build();}
try{Integer deviceType = msg.getDeviceType(); //设备类型 0 :全设备 1:android 2:IOS//开始构造定向推送Map<String, String> extra = new HashMap<String, String>();if (deviceType != null && msg.getDeviceType() == DeviceType_Android) {setProduAndroidFlag();//安卓没有测试环境,用单个的标记位控制是否推送一个还是推送所有String alias = "";if(!msg.isPushModeAndroid()&&!StringUtils.isEmpty(msg.getRegId())){alias = msg.getRegId();}if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){//1:直接打开应用,进首页;2:进入指定的H5页面;extra.put("class", "com.shop.splash.SplashActivity");extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");}return XiaomiUtils.sendAndroidAll(msg.getTitle(), msg.getContent(),msg.getStime(),extra,alias);} else if (deviceType != null && msg.getDeviceType() == DeviceType_IOS) {//控制是推正式环境还是测试环境setProductionMode(msg);if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){extra.put("class", "DWebDetailController");extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");}return XiaomiUtils.sendIOSAll(msg.getContent(),msg.getStime(),extra);} else{setProduAndroidFlag();//安卓没有测试环境,用单个的标记位控制是否推送一个还是推送所有String alias = "";if(!msg.isPushModeAndroid()&&!StringUtils.isEmpty(msg.getRegId())){alias = msg.getRegId();}if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){//1:直接打开应用,进首页;2:进入指定的H5页面;extra = new HashMap<String, String>();extra.put("class", "com.shop.splash.SplashActivity");extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");}boolean flagA = XiaomiUtils.sendAndroidAll(msg.getTitle(), msg.getContent(),msg.getStime(),extra,alias);//控制是推正式环境还是测试环境setProductionMode(msg);if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){extra = new HashMap<String, String>();extra.put("class", "DWebDetailController");extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");}boolean flagI =  XiaomiUtils.sendIOSAll(msg.getContent(),msg.getStime(),extra);if(flagA&&flagI){return true;}else{return false;}}}catch(Exception ex){ex.printStackTrace();}

App推送java服务端_小米推送相关推荐

  1. java服务端集成信鸽推送

    java服务端集成信鸽推送 最近项目需要集成推送功能,突发奇想的选了信鸽推送(可能是最近一直在用阿里的东西),没想到这坑不是一般的多,而且关于详细的集成案例,度娘上真是没一个能入眼的.算了,别的不多说 ...

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

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

  3. java 服务端使用个推,个推JAVA服务端接入说明

    个推简介 官方文档 个推是商用级的移动应用消息推送云服务解决方案,客户端SDK支持Android和iOS两大平台. 服务端接入步骤 登录个推开发者中心,注册应用,获取AppID.AppKey.Mast ...

  4. IOS IAP APP内支付 Java服务端代码

    场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purchase(iap)快速指南了解原理. 直接先上服务端测试通 ...

  5. java服务端统一消息推送(苹果, 华为, 小米, 极光,vivo)

    1. 引入依赖 <!-- 极光 --> <dependency><groupId>cn.jpush.api</groupId><artifactI ...

  6. java百度云推送demo_百度云推送java服务端maven安装完整demo

    /*** 推送单播通知 *@author* @Date 2017年3月2日 * @Desc*/ public classBaiduPush {publicString[] pushNotificati ...

  7. java服务端的 极光推送

    项目中用到了极光推送  下面写下笔记 首先引入jar包   下载地址https://docs.jiguang.cn/jpush/resources/(非maven项目的下载地址) <depend ...

  8. 友盟消息推送java服务端

    基本概念 appkey:应用唯一标识 app_master_secret:服务器Key. device_token: 友盟后台对设备的唯一标识.注意, Android的device_token是44位 ...

  9. 极光推送java服务端-通知(2)

    1.下载SDK REST API为极光推送开发API 2.下载好后,maven导入后可以参考示例 官方demo 4.小demo // 设置好账号的app_key和masterSecret是必须的pri ...

最新文章

  1. SAP PI 7.3新特性介绍
  2. python鼠标键盘操作 PyUserInput
  3. java 多线程状态_总结Java中线程的状态及多线程的实现方式
  4. mysql自动插入的时间不对 差8小时
  5. 云重磅 | 没有硬件,苹果发布多款“云服务”;阿里云发布基于公共云的虚拟GPU服务;中国移动首发5G套餐...
  6. LifecycleException:Failed to start component [Connector[HTTP/1.1-8081]]
  7. pytorch 入门学习加载数据集-8
  8. php的public、protected、private三种访问控制模式的区别
  9. 10无法更新系统_2020年4月公积金网上系统更新后无法登陆故障解决办法
  10. 风控中英文术语手册(银行_消费金融信贷业务)_v3
  11. php的UDP攻击,phpddos应对 最近新起一种udp flood的攻击形式
  12. 让电脑崩溃的100种方式(第四种)——结束csrss.exe进程
  13. 前端设置画布的高度_前端页面内的高度、位置简述
  14. python之路_面向对象
  15. Zabbix实现企业微信报警
  16. 计算机系统软件抗干扰,工控计算机软件抗干扰技术
  17. Entity Framework Code First使用者的福音 --- EF Power Tool使用记之一
  18. 世界互联网大会,乌镇,互联网人的盛会,大数据文摘来了!
  19. opencv实现实时“无脸男”
  20. 什么是API网关, API 网关的作用

热门文章

  1. DirectX11的Shader Reflect的几个问题(2012-2-22更新)
  2. 1.20 代码语法颜色样式的设置 [原创iOS开发-Xcode教程]
  3. FastBoot 刷机教程
  4. swift之网络下载图片sdwebImage、Kingfisher、Nuke
  5. 西工大--人工智能程序设计noj--前60道
  6. 第五讲:研发项目需求的精准定义
  7. 蜂蜜加热后吃了会怎样?蜂蜜可以加热吃吗?
  8. ROS1云课→25机器人控制配置
  9. 【PTA】跟奥巴马一起画方块
  10. 程序员由于天天和逻辑打交道,所以在世故的人眼里往往显得过于简单。