1. 程式人生 > >【轉載】極光推送 使用例項 (一)服務端

【轉載】極光推送 使用例項 (一)服務端

最近一直在做後臺開發,但心裡還是總惦記著Android,感覺還是Android有意思。正好專案中要用到極光推送,今天抽空來記錄下這兩天的研究成果。

         我們知道IOS有自己的推送服務,但很遺憾Android沒有原生的推送服務,現在有很多第三方的推送服務,比如個推、極光、亞馬遜、百度雲、聚能等。今天我們就來研究下極光推送的後臺伺服器如何實現。

         關鍵點:

        1.首先最好是把極光官網java後臺伺服器的demo下載下來,裡面有我們需要的jar包,以及example.

        2.極光推送的關鍵jpushClient = new JPushClient(masterSecret, appKey, 3);就是這個類。其中的引數需要我們從極光官網註冊開發者,然後建立具體專案獲取相應的兩                 個key值。其中appKey值就是我們手機端對應的key值

        3.極光推送給我們提供了很多種推送的方式,我們可以選擇某一個平臺進行推送(Android ,IOS ,Windows Phone),也可以全部推送;我們可以針對某個特別的使用者進行推送(設定alisa),也可以針對特別的群體進行推送(設定tag),第三個引數是設定推送保留的時間,只要在有效時間內上線就可以收到推送資訊

        4. 極光推送現在都用https連線,提交請求是post,獲取資料為get

        ok 接下來就看服務端的實現(JAVA),JdPush推送方法+一個Servlet

:

  1. package com.weiwend.jdpush;  
  2. import org.slf4j.Logger;  
  3. import org.slf4j.LoggerFactory;  
  4. import cn.jpush.api.JPushClient;  
  5. import cn.jpush.api.common.resp.APIConnectionException;  
  6. import cn.jpush.api.common.resp.APIRequestException;  
  7. import cn.jpush.api.push.PushResult;  
  8. import cn.jpush.api.push.model.Message;  
  9. import cn.jpush.api.push.model.Options;  
  10. import
     cn.jpush.api.push.model.Platform;  
  11. import cn.jpush.api.push.model.PushPayload;  
  12. import cn.jpush.api.push.model.audience.Audience;  
  13. import cn.jpush.api.push.model.audience.AudienceTarget;  
  14. import cn.jpush.api.push.model.notification.AndroidNotification;  
  15. import cn.jpush.api.push.model.notification.IosNotification;  
  16. import cn.jpush.api.push.model.notification.Notification;  
  17. publicclass Jdpush {  
  18.      protectedstaticfinal Logger LOG = LoggerFactory.getLogger(Jdpush.class);  
  19.      // demo App defined in resources/jpush-api.conf 
  20.     publicstaticfinal String TITLE = "申通快遞";  
  21.     publicstaticfinal String ALERT = "祝大家新春快樂";  
  22.     publicstaticfinal String MSG_CONTENT = "申通快遞祝新老客戶新春快樂";  
  23.     publicstaticfinal String REGISTRATION_ID = "0900e8d85ef";  
  24.     publicstaticfinal String TAG = "tag_api";  
  25.     publicstatic JPushClient jpushClient=null;  
  26.     publicstaticvoid testSendPush(String appKey ,String masterSecret) {  
  27.          jpushClient = new JPushClient(masterSecret, appKey, 3);  
  28.         // HttpProxy proxy = new HttpProxy("localhost", 3128);
  29.         // Can use this https proxy: https://github.com/Exa-Networks/exaproxy
  30.         // For push, all you need do is to build PushPayload object.
  31.         //PushPayload payload = buildPushObject_all_all_alert();
  32.          //生成推送的內容,這裡我們先測試全部推送
  33.         PushPayload payload=buildPushObject_all_alias_alert();  
  34.         try {  
  35.             System.out.println(payload.toString());  
  36.             PushResult result = jpushClient.sendPush(payload);  
  37.             System.out.println(result+"................................");  
  38.             LOG.info("Got result - " + result);  
  39.         } catch (APIConnectionException e) {  
  40.             LOG.error("Connection error. Should retry later. ", e);  
  41.         } catch (APIRequestException e) {  
  42.             LOG.error("Error response from JPush server. Should review and fix it. ", e);  
  43.             LOG.info("HTTP Status: " + e.getStatus());  
  44.             LOG.info("Error Code: " + e.getErrorCode());  
  45.             LOG.info("Error Message: " + e.getErrorMessage());  
  46.             LOG.info("Msg ID: " + e.getMsgId());  
  47.         }  
  48.     }  
  49.     publicstatic PushPayload buildPushObject_all_all_alert() {  
  50.         return PushPayload.alertAll(ALERT);  
  51.     }  
  52.     publicstatic PushPayload buildPushObject_all_alias_alert() {  
  53.         return PushPayload.newBuilder()  
  54.                 .setPlatform(Platform.all())//設定接受的平臺
  55.                 .setAudience(Audience.all())//Audience設定為all,說明採用廣播方式推送,所有使用者都可以接收到
  56.                 .setNotification(Notification.alert(ALERT))  
  57.                 .build();  
  58.     }  
  59.     publicstatic PushPayload buildPushObject_android_tag_alertWithTitle() {  
  60.         return PushPayload.newBuilder()  
  61.                 .setPlatform(Platform.android())  
  62.                 .setAudience(Audience.all())  
  63.                 .setNotification(Notification.android(ALERT, TITLE, null))  
  64.                 .build();  
  65.     }  
  66.     publicstatic PushPayload buildPushObject_android_and_ios() {  
  67.         return PushPayload.newBuilder()  
  68.                 .setPlatform(Platform.android_ios())  
  69.                 .setAudience(Audience.tag("tag1"))  
  70.                 .setNotification(Notification.newBuilder()  
  71.                         .setAlert("alert content")  
  72.                         .addPlatformNotification(AndroidNotification.newBuilder()  
  73.                                 .setTitle("Android Title").build())  
  74.                         .addPlatformNotification(IosNotification.newBuilder()  
  75.                                 .incrBadge(1)  
  76.                                 .addExtra("extra_key""extra_value").build())  
  77.                         .build())  
  78.                 .build();  
  79.     }  
  80.     publicstatic PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {  
  81.         return PushPayload.newBuilder()  
  82.                 .setPlatform(Platform.ios())  
  83.                 .setAudience(Audience.tag_and("tag1""tag_all"))  
  84.                 .setNotification(Notification.newBuilder()  
  85.                         .addPlatformNotification(IosNotification.newBuilder()  
  86.                                 .setAlert(ALERT)  
  87.                                 .setBadge(5)  
  88.                                 .setSound("happy")  
  89.                                 .addExtra("from""JPush")  
  90.                                 .build())  
  91.                         .build())  
  92.                  .setMessage(Message.content(MSG_CONTENT))  
  93.                  .setOptions(Options.newBuilder()  
  94.                          .setApnsProduction(true)  
  95.                          .build())  
  96.                  .build();  
  97.     }  
  98.     publicstatic PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {  
  99.         return PushPayload.newBuilder()  
  100. 相關推薦

    轉載極光 使用例項 服務

    最近一直在做後臺開發,但心裡還是總惦記著Android,感覺還是Android有意思。正好專案中要用到極光推送,今天抽空來記錄下這兩天的研究成果。         我們知道IOS有自己的推送服務,但很遺憾Android沒有原生的推送服務,現在有很多第三方的推送服務,比如個推、極光、亞馬遜、百度雲、聚能等。今天

    極光 使用例項 服務

                    原文:http://blog.csdn.net/u014733374/article/detail

    轉載.NET Remoting學習筆記概念

    leg false 情況下 system 版權 while 對象模式 無需 new 目錄 .NET Remoting學習筆記(一)概念 .NET Remoting學習筆記(二)激活方式 .NET Remoting學習筆記(三)信道 背景 自接觸編程以來,一直聽過這個名

    nodejs+socketio+redis 簡單訊息例項

    前段時間採用nodejs+socketio+redis做了個簡單的訊息推送例子,發出來與大家分享一下: 一、安裝nodejs伺服器 1、從Node.js官方網站下載:http://www.nodejs.org/#download;根據自己系統選擇下載wind

    轉載Flume學習之路 Flume的基礎介紹

    必須 4.3 bin tar.gz 開源 暴露 linu ror 失敗 討論QQ:1586558083目錄一、背景二、Flume的簡介三、Flume NG的介紹3.1 Flume特點3.2 Flume的一些核心概念3.3 Flume NG的體系結構3.4 Source3.5

    轉載.NET Remoting學習筆記信道

    star fig cati 服務端 pro net string spa 處理類型 目錄 .NET Remoting學習筆記(一)概念 .NET Remoting學習筆記(二)激活方式 .NET Remoting學習筆記(三)信道 參考:♂風車車.Net .NET Fra

    轉載主成分分析法PCA

    差異 投影 3D 方式 分享 alt 訓練 矩陣 9.png https://www.jisilu.cn/question/252942 進行維數約減(Dimensionality Reduction),目前最常用的算法是主成分分析法 (Principal Componet

    網路程式設計基礎day08:簡單socket例項

    本節內容 1、概述 2、socket例項 3、總結 一、概述   之前我們只是介紹了soket的概念和一些邏輯圖表,下面我們來看看,socket的客戶端和服務端到底是怎麼用的? 二、socket例項 2.1 客戶端 2.1.1 客戶端程式碼邏輯圖 2.1.2 客戶端程式碼

    原創Spring-Cloud快速入門服務入門--轉載請註明出處

    一、什麼是微服務? 有時候,會有的人存在誤解,所謂微服務就是SpringCloud。這種思想本身是不正確的,微服務是一種系統架構上面的設計風格,而SpringCloud則是一種較為適用於微服務架構的框架。 在java體系中,我們通常需要將一個大的類,拆分成若干個的小的類,每個類都具有自己獨立

    原創Spring-boot快速入門HelloWord!--轉載請註明出處

    Spring-boot快速入門(一)HelloWord! 一、Spring-boot簡介 1. Spring-boot介紹 Spring-boot是一款將Spring4.X版本Spring族群進行整合的一款框架,繼承了來自於Spring族群的絕大部分功能,在Spring4.

    轉載iPhone開發之NSNotificationCenter通知的使用方法

    iPhone軟體開發的時候會遇到這種情況:開啟APP後會在後臺執行某個方法,例如下載檔案,下載完成後可能需要呼叫某個方法來重新整理介面,這時候可能沒法在下載的函式中回撥。NSNotificationCenter(通知)是一個很好的選擇。 通知使用起來灰常的簡單: 1、定義通知:[[NSNotifica

    雷電源代碼分析-- 進入遊戲開始界面

    模式 show 源代碼下載 popu 按鍵事件 file fcm md5 顯示 轉載請註明出處:http://blog.csdn.net/oyangyufu/article/details/24941949 源代碼下載:http://download.csdn.n

    編碼量子密碼學習筆記

    一個量子實驗:         我們購買三個濾光器A,B,C,分別代表水平濾光,右斜45度濾光,以及四分之一波片(解釋在下面,最後可得到一個有兩個垂直分量的波)。         在光源和牆壁之間

    電路差分介面互連

     差分輸入  The high-speed digital inputs (DATA0/NDATA0,RCV0/NRCV0, DATA1/NDATA1, and RCV1/NRCV1) are intended for use with a high-speed di

    精選JAVA入門演算法題

    跌倒了,一定要爬起來。不爬起來,別人會看不起你,你也會失去機會。 1.題目:打印出楊輝三角形(要求打印出10行) 什麼是楊輝三角呢?下面這個就是 楊輝三角最大的特性就是每個數字都是該數字肩上的兩個數字之和,這道題經常在學習二維陣列和迴圈控制中出現 我們可以假設

    更新CLion v2018.3釋出:初始遠端開發支援

    下載CLion最新版本 CLion是一款專為開發C及C++所設計的跨平臺IDE。它是以IntelliJ為基礎設計的,包含了許多智慧功能來提高開發人員的生產力。這種強大的IDE幫助開發人員在Linux、OS X和Windows上來開發C/C++,同時它還使用智慧編輯器來提高程式碼質量、自動程式碼重構並且深

    連載Django入門到實戰

    一、專案目錄結構介紹 manager.py 與專案進行互動的命令列工具集的入口(專案管理器) MyDjango 目錄:專案容器,包含專案的基本配置,目錄名稱不建議修改 __init__.py Python中宣告模組的檔案,內容預設為空 settings.py 專案

    .NETMVC我的Cloud專案

    一、前言 想做一個WEB程式作為練習,包含各種WEB型別的專案。希望以手機桌面APP的形式,一平臺多應用的樣子。 二、開始前的準備 1.模組劃分。部落格。許可權管理模組。後續,可能還會增加,現在以這兩個為主。 2.編寫功能例項。 使用者登入->功能模組(如部落

    MybtaisMybatis 外掛 Plugin開發動態代理步步解析

    需求:   對原有系統中的方法進行‘攔截’,在方法執行的前後新增新的處理邏輯。 分析:   不是辦法的辦法就是,對原有的每個方法進行修改,新增上新的邏輯;如果需要攔截的方法比較少,選擇此方法到是會節省成本。但是面對成百上千的方法怎麼辦?此時需要用到動態代理來實現。 場景:   例如:對原有的系統新增日誌記錄、

    MATLAB 向量化程式設計實踐

    MATLAB的特色就是向量化的程式設計,所以有必要練習如何使用向量化程式設計,用一個小例子開始,例如下面的正弦函式求和運算,要求畫出影象。 毋庸置疑,我們肯定可以使用迴圈等和其他語言一樣的方法實現