Jpush之如何利用HttpClient实现消息推送到手机
2017-04-28 22:29
639 查看
开心一笑
【1.再逼我,再逼我就装死给你看.2.打死我也不说,你还没使美人儿计呢.
3.帅有个P用?搞不好还不是被卒子给吃掉.
4.别紧张,我不是什么好人.
5.够不着吧,左脚踩右脚上试试.
只为逗你一笑】
视频教程
大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……视频地址:http://edu.csdn.net/lecturer/994
提出问题
后端如何利用Jpush极光推送消息到手机端???解决问题
Jpush极光文档官网
http://docs.jiguang.cn/jpush/guideline/intro/Jpush产品简介
JPush是经过考验的大规模APP推送平台,每天推送消息数超过5亿条。 开发者集成SDK后,可以通过调用API推送消息。同时,JPush提供可视化的web端控制台发送通知,统计分析推送效果。 JPush全面支持 Android, iOS, Winphone 三大手机平台Jpush后端开发资料
这是Jpush给手机端推送消息时候,需要看的资料文档。http://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
Jpush后端开发实例
调用地址
事实上我们只要用 HttpClient 向下面的路径发送 POST请求即可。https://api.jpush.cn/v3/push (重要)
请求的数据格式为
{ "platform": "all", "audience" : "all", "notification" : { "alert" : "Hi, JPush!", "android" : {}, "ios" : { "extras" : { "newsid" : 321} } } } //调用时,需要的一些认证信息,这里需要自己到Jpush上去注册获取认证信息 Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
返回示例
调用成功后,会返回如下的信息:
< HTTP/1.1 200 OK < Content-Type: application/json {"sendno":"18","msg_id":"1828256757"}
后端代码
package com.evada.de.projcommand.utils; /** * 描述:手机端消息推送工具类 * Created by Ay on 2017/4/17. */ public class PcsHttpClientUtil { /** 请求的url路径 **/ public static final String JPUSH_URL = "https://api.jpush.cn/v3/push"; /** 字符编码 **/ private static final String CHARSET = "utf-8"; /** 验证密码 **/ private static final String AUTH = "Basic MzRiZmU5NWRjYmYxMjhhNzFjMmM2YzE4OmQ4NGVhZjZkOWI3YjY1NjUwZDAxODBlYg=="; /** * 描述:发送post请求 * @return */ public static String doPost(Map<SysUser,List<PcsSubTaskDTO>> userListMap, String actionType, PcsTask pcsTask){ HttpClient httpClient = null; HttpPost httpPost = null; String result = null; try{ httpClient = new DefaultHttpClient(); httpPost = new HttpPost(JPUSH_URL); //设置认证信息 httpPost.setHeader("Authorization",AUTH); for(SysUser sysUser:userListMap.keySet()){ JSONObject msgObject = getRequestContent(userListMap.get(sysUser),sysUser,actionType,pcsTask); StringEntity entity = new StringEntity(msgObject.toString(),"utf-8"); entity.setContentType("application/json"); httpPost.setEntity(entity); //执行请求 HttpResponse response = httpClient.execute(httpPost); if(response != null){ HttpEntity resEntity = response.getEntity(); if(resEntity != null){ result = EntityUtils.toString(resEntity,CHARSET); } } } }catch (IOException e){ e.printStackTrace(); } return result; } private static JSONObject getRequestContent(List<PcsSubTaskDTO> pcsSubTaskDTOList,SysUser sysUser,String actionType,PcsTask pcsTask){ JSONObject msgObject = new JSONObject(); msgObject.put("platform", "all"); msgObject.put("audience", getUserAccountArray(sysUser)); msgObject.put("notification",getNotification(pcsSubTaskDTOList,actionType,pcsTask)); JSONObject optionsJson = new JSONObject(); optionsJson.put("apns_production",false); msgObject.put("options",optionsJson); return msgObject; } private static JSONObject getNotification(List<PcsSubTaskDTO> pcsSubTaskDTOList,String actionType , PcsTask pcsTask){ JSONObject result = new JSONObject(); StringBuilder msg = new StringBuilder(); //if task deliver if(TaskMsgTypeEnum.TASK_ISSUE_NOTICE.toString().equals(actionType)){ msg.append("【任务下发通知】") .append(" 您好,").append(SessionUtils.getCurrentUser().getName()).append("已将任务:") .append(pcsTask.getName()).append("-").append(pcsTask.getCode()).append("下发。请及时签收处理您的任务:\n "); for(PcsSubTaskDTO pcsSubTaskDTO:pcsSubTaskDTOList){ msg.append(pcsSubTaskDTO.getCode()).append("-").append(pcsSubTaskDTO.getName()) .append(",计划开始时间: ").append(new DateTime(pcsSubTaskDTO.getPlanStartTime()).toString("dd-MM-yyyy HH:mm:ss")).append(" \n "); } }else{ msg.append("【任务催收通知】") .append(" 您好,").append(SessionUtils.getCurrentUser().getName()).append("已将任务:") .append(pcsTask.getName()).append("-").append(pcsTask.getCode()).append(" 进行了催收。您还存在以下任务未完成:\n "); for(PcsSubTaskDTO pcsSubTaskDTO:pcsSubTaskDTOList){ msg.append(pcsSubTaskDTO.getCode()).append("-").append(pcsSubTaskDTO.getName()) .append(",计划完成时间:").append(new DateTime(pcsSubTaskDTO.getPlanCompleteTime()).toString("dd-MM-yyyy HH:mm:ss")).append(" \n "); } } result.put("alert",msg.toString()); JSONObject badge = new JSONObject(); badge.put("badge","+1"); result.put("ios" , badge); return result; } /** * 描述:获取用户账户 * @param sysUser 用户 * @return */ private static JSONObject getUserAccountArray(SysUser sysUser){ JSONObject result = new JSONObject(); JSONArray accountArray = new JSONArray(); accountArray.add(sysUser.getAccount()); //别名 result.put("alias",accountArray); return result; } }
读书感悟
来自《喧嚣与骚动》任何一个活着的人都比死去的人强。但是任何一个活着的人都不比另一个活着的人强多少。
人者,无非是其不幸之总和而已。你以为有朝一日不幸会感到厌倦,可是到那时,时间又变成了你的不幸了。
人们都生活在一种梦境中,在这里,你跑,却不能离开你无法相信的一种恐惧,你奔向一个安全的境地,对之你并无信心。
经典故事
【有这么一个故事:老族长带领村民日夜兼程,要把盐运送到某地换成过冬的大麦。有一天晚上,他们露宿于荒野,星空灿烂。长者依然用祖先世代传下来的方法,取出三块盐投入篝火,占卜山间天气的变化……大家都在等待长者的“天气预报”:若听到火中盐块发出“噼里啪啦”的声响,那就是好天气的预兆;若是毫无声息,那就象征天气即将变坏,风雨随时会来临。长者神情严肃,因为盐块在火中毫无声息。他认为不吉,主张天亮后马上赶路。但族中另一位年轻人,认为“以盐窥天”是迷信,反对匆忙启程。第二天下午,果然天气骤变,风雪交加,坚持晚走的年轻人这才领悟到长者的睿智。其实,用今天的科学解释,老族长也是对的,盐块在火中是否发出声音,与空气中的湿度相关。换句话说,当风雨欲来,湿度高,盐块受潮,投入火中自然喑哑无声。年轻人往往看不起老人的哲学,片面地认为它们都是过时的、无用的。其实,一些人生理念如同海盐,它再老,仍然是一种结晶,并且有海的记忆。】
大神文章
【1】HttpClient发送get post请求和数据解析【2】轻松把玩HttpClient之模拟post请求示例
【3】jPush 极光推送的理解
【4】JPush消息推送的简单使用
其他
如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!相关文章推荐
- 如何使用androidpn实现android手机消息推送(简单的源码分析)
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
- 如何使用androidpn实现android手机消息推送(简单的源码分析)
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
- 如何使用androidpn实现android手机消息推送(简单的源码分析)
- 如何使用androidpn实现android手机消息推送(简单的源码分析)
- 如何利用jgroups实现分布式环境下消息的接受和发送
- android中push机制实现:搭建XMPP协议,实现自主推送消息到手机
- 如何利用jgroups实现分布式环境下消息的接受和发送
- 如何实现消息推送机制
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- Android中利用App实现消息推送机制的代码
- Android: 如何利用Handler处理和发送消息来实现页面刷新的功能
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- 搭建XMPP协议,实现自主推送消息到手机
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- Android中利用App实现消息推送机制的代码实例