App推送java服务端_小米推送
来源:互联网 发布:百度清风算法 编辑:程序博客网 时间:2024/05/29 00:34
目前主流的推送,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();}
1 0
- App推送java服务端_小米推送
- App推送java服务端_jpush激光推送
- 小米推送server服务端
- App集成小米推送
- 小米推送,华为推送,个推,阿里云推送集成(服务端JAVA开发)
- IOS 推送 + java 服务端
- 极光推送java服务端
- 极光推送java服务端
- 极光推送在java服务端推送消息到手机APP使用简单的demo
- java服务端极光推送一
- 小米推送Cordova,Cordova 小米推送 ionic 小米推送
- iOS 消息推送 JAVA推送服务端 一次性操作成功
- Java服务端调用百度推送接口推送消息
- 小米手机退出app后收不到极光推送消息
- JAVA服务端用友盟给APP(android和IOS)推送消息
- JAVA服务端用友盟给APP(android和IOS)推送消息--转自Carrot_lin
- 小米推送简单使用方法
- 小米消息推送服务
- c# lua 简单交互
- 移动开发涉及的方面
- 孩子上网最易中招的4个陷阱
- java序列化/反序列化之xml、protobuf、protostuff 的比较与使用例子
- 探索性数据分析与可视化
- App推送java服务端_小米推送
- Dalvik 和 ART区别
- SVN(TortoiseSVN)详细教程(一)--下载与安装部署
- ActionBar SearchView空指针异常
- android中svg文件的使用
- excel2003 操作
- 通过Socket实现UDP(用户数据报)编程
- java.lang.NoClassDefFoundError: org/apache/log4j/Layout
- 用yum查询想安装的软件