開心一笑
【1.再逼我,再逼我就裝死給你看.
2.打死我也不說,你還沒使美人兒計(jì)呢.
3.帥有個(gè)P用?搞不好還不是被卒子給吃掉.
4.別緊張,我不是什么好人.
5.夠不著吧,左腳踩右腳上試試.
只為逗你一笑】
提出問題
后端如何利用Jpush極光推送消息到手機(jī)端???
解決問題
Jpush極光文檔官網(wǎng)
http://docs.jiguang.cn/jpush/guideline/intro/
Jpush產(chǎn)品簡介
JPush是經(jīng)過考驗(yàn)的大規(guī)模APP推送平臺返吻,每天推送消息數(shù)超過5億條内狗。 開發(fā)者集成SDK后投队,可以通過調(diào)用API推送消息诅需。同時(shí),JPush提供可視化的web端控制臺發(fā)送通知,統(tǒng)計(jì)分析推送效果。 JPush全面支持 Android, iOS, Winphone 三大手機(jī)平臺
Jpush后端開發(fā)資料
這是Jpush給手機(jī)端推送消息時(shí)候,需要看的資料文檔诫睬。
http://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/
Jpush后端開發(fā)實(shí)例
調(diào)用地址
事實(shí)上我們只要用 HttpClient 向下面的路徑發(fā)送 POST請求即可。
https://api.jpush.cn/v3/push (重要)
請求的數(shù)據(jù)格式為
{
"platform": "all",
"audience" : "all",
"notification" : {
"alert" : "Hi, JPush!",
"android" : {},
"ios" : {
"extras" : { "newsid" : 321}
}
}
}
//調(diào)用時(shí)帕涌,需要的一些認(rèn)證信息摄凡,這里需要自己到Jpush上去注冊獲取認(rèn)證信息
Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
返回示例
調(diào)用成功后续徽,會(huì)返回如下的信息:
< HTTP/1.1 200 OK
< Content-Type: application/json
{"sendno":"18","msg_id":"1828256757"}
后端代碼
package com.evada.de.projcommand.utils;
/**
* 描述:手機(jī)端消息推送工具類
* 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";
/** 驗(yàn)證密碼 **/
private static final String AUTH = "Basic MzRiZmU5NWRjYmYxMjhhNzFjMmM2YzE4OmQ4NGVhZjZkOWI3YjY1NjUwZDAxODBlYg==";
/**
* 描述:發(fā)送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);
//設(shè)置認(rèn)證信息
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);
//執(zhí)行請求
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("【任務(wù)下發(fā)通知】")
.append(" 您好,").append(SessionUtils.getCurrentUser().getName()).append("已將任務(wù):")
.append(pcsTask.getName()).append("-").append(pcsTask.getCode()).append("下發(fā)架谎。請及時(shí)簽收處理您的任務(wù):\n ");
for(PcsSubTaskDTO pcsSubTaskDTO:pcsSubTaskDTOList){
msg.append(pcsSubTaskDTO.getCode()).append("-").append(pcsSubTaskDTO.getName())
.append(",計(jì)劃開始時(shí)間: ").append(new DateTime(pcsSubTaskDTO.getPlanStartTime()).toString("dd-MM-yyyy HH:mm:ss")).append(" \n ");
}
}else{
msg.append("【任務(wù)催收通知】")
.append(" 您好炸宵,").append(SessionUtils.getCurrentUser().getName()).append("已將任務(wù):")
.append(pcsTask.getName()).append("-").append(pcsTask.getCode()).append(" 進(jìn)行了催收。您還存在以下任務(wù)未完成:\n ");
for(PcsSubTaskDTO pcsSubTaskDTO:pcsSubTaskDTOList){
msg.append(pcsSubTaskDTO.getCode()).append("-").append(pcsSubTaskDTO.getName())
.append(",計(jì)劃完成時(shí)間:").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;
}
}
讀書感悟
來自《喧囂與騷動(dòng)》
- 任何一個(gè)活著的人都比死去的人強(qiáng)谷扣。但是任何一個(gè)活著的人都不比另一個(gè)活著的人強(qiáng)多少土全。
- 人者,無非是其不幸之總和而已会涎。你以為有朝一日不幸會(huì)感到厭倦裹匙,可是到那時(shí),時(shí)間又變成了你的不幸了末秃。
- 人們都生活在一種夢境中概页,在這里,你跑练慕,卻不能離開你無法相信的一種恐懼惰匙,你奔向一個(gè)安全的境地,對之你并無信心铃将。
經(jīng)典故事
【有這么一個(gè)故事:老族長帶領(lǐng)村民日夜兼程项鬼,要把鹽運(yùn)送到某地?fù)Q成過冬的大麥。有一天晚上劲阎,他們露宿于荒野绘盟,星空燦爛。長者依然用祖先世代傳下來的方法悯仙,取出三塊鹽投入篝火龄毡,占卜山間天氣的變化……大家都在等待長者的“天氣預(yù)報(bào)”:若聽到火中鹽塊發(fā)出“噼里啪啦”的聲響,那就是好天氣的預(yù)兆锡垄;若是毫無聲息沦零,那就象征天氣即將變壞,風(fēng)雨隨時(shí)會(huì)來臨货岭。長者神情嚴(yán)肅蠢终,因?yàn)辂}塊在火中毫無聲息。他認(rèn)為不吉茴她,主張?zhí)炝梁篑R上趕路。但族中另一位年輕人程奠,認(rèn)為“以鹽窺天”是迷信丈牢,反對匆忙啟程。第二天下午瞄沙,果然天氣驟變己沛,風(fēng)雪交加慌核,堅(jiān)持晚走的年輕人這才領(lǐng)悟到長者的睿智。其實(shí)申尼,用今天的科學(xué)解釋垮卓,老族長也是對的,鹽塊在火中是否發(fā)出聲音师幕,與空氣中的濕度相關(guān)粟按。換句話說,當(dāng)風(fēng)雨欲來霹粥,濕度高灭将,鹽塊受潮,投入火中自然喑啞無聲后控。年輕人往往看不起老人的哲學(xué)庙曙,片面地認(rèn)為它們都是過時(shí)的、無用的浩淘。其實(shí)捌朴,一些人生理念如同海鹽,它再老张抄,仍然是一種結(jié)晶砂蔽,并且有海的記憶⌒辣睿】
大神文章
【1】HttpClient發(fā)送get post請求和數(shù)據(jù)解析
【2】輕松把玩HttpClient之模擬post請求示例
【3】jPush 極光推送的理解
【4】JPush消息推送的簡單使用
其他
如果有帶給你一絲絲小快樂察皇,就讓快樂繼續(xù)傳遞下去,歡迎點(diǎn)贊泽台、頂什荣、歡迎留下寶貴的意見、多謝支持怀酷!