Jpush之如何利用HttpClient實(shí)現(xiàn)消息推送到手機(jī)

開心一笑

【1.再逼我,再逼我就裝死給你看.
2.打死我也不說,你還沒使美人兒計(jì)呢.
3.帥有個(gè)P用?搞不好還不是被卒子給吃掉.
4.別緊張,我不是什么好人.
5.夠不著吧,左腳踩右腳上試試.
只為逗你一笑】

提出問題

后端如何利用Jpush極光推送消息到手機(jī)端???

1

解決問題

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/

1

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)贊泽台、頂什荣、歡迎留下寶貴的意見、多謝支持怀酷!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稻爬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜕依,更是在濱河造成了極大的恐慌桅锄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件样眠,死亡現(xiàn)場離奇詭異友瘤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)檐束,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門辫秧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人被丧,你說我怎么就攤上這事盟戏⌒髅茫” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵柿究,是天一觀的道長邮旷。 經(jīng)常有香客問我,道長蝇摸,這世上最難降的妖魔是什么婶肩? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮探入,結(jié)果婚禮上狡孔,老公的妹妹穿的比我還像新娘。我一直安慰自己蜂嗽,他們只是感情好苗膝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著植旧,像睡著了一般辱揭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上病附,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天问窃,我揣著相機(jī)與錄音,去河邊找鬼完沪。 笑死域庇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的覆积。 我是一名探鬼主播听皿,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宽档!你這毒婦竟也來了尉姨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吗冤,失蹤者是張志新(化名)和其女友劉穎又厉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椎瘟,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡覆致,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肺蔚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篷朵。...
    茶點(diǎn)故事閱讀 40,021評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出声旺,到底是詐尸還是另有隱情,我是刑警寧澤段只,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布腮猖,位于F島的核電站,受9級特大地震影響赞枕,放射性物質(zhì)發(fā)生泄漏澈缺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一炕婶、第九天 我趴在偏房一處隱蔽的房頂上張望姐赡。 院中可真熱鬧,春花似錦柠掂、人聲如沸项滑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枪狂。三九已至,卻和暖如春宋渔,著一層夾襖步出監(jiān)牢的瞬間州疾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工皇拣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留严蓖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓氧急,卻偏偏與公主長得像颗胡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子态蒂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 推送技術(shù)產(chǎn)生場景: --服務(wù)器端主動(dòng)性: 客戶端與服務(wù)器交互都是客戶端主動(dòng)的, 服務(wù)器一般不能主動(dòng)與客戶端進(jìn)行數(shù)據(jù)...
    原軍鋒閱讀 34,634評論 4 60
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理杭措,服務(wù)發(fā)現(xiàn),斷路器钾恢,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 版本記錄 前言 ??現(xiàn)在很多APP都有推送功能手素,其中極光推送就是很多APP的首選。我們最近的幾個(gè)APP也是用的極光...
    刀客傳奇閱讀 8,391評論 0 8
  • 極光推送使用流程: 1.去極光推送開發(fā)者服務(wù)網(wǎng)站注冊賬號 https://www.jiguang.cn/accou...
    Lucian_qls閱讀 4,344評論 2 3
  • 說自己能夠做到的瘩蚪,做自己所說的泉懦,說與做一致性,不夸大疹瘦,在孤獨(dú)的時(shí)候堅(jiān)守崩哩,在寂寞的時(shí)候忍受,在理想與現(xiàn)實(shí)中最大的透...
    郭相麟閱讀 214評論 0 0