【轉載】極光推送 使用例項 (一)服務端
最近一直在做後臺開發,但心裡還是總惦記著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
:
- package com.weiwend.jdpush;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import cn.jpush.api.JPushClient;
- import cn.jpush.api.common.resp.APIConnectionException;
- import cn.jpush.api.common.resp.APIRequestException;
- import cn.jpush.api.push.PushResult;
- import cn.jpush.api.push.model.Message;
- import cn.jpush.api.push.model.Options;
- import
- import cn.jpush.api.push.model.PushPayload;
- import cn.jpush.api.push.model.audience.Audience;
- import cn.jpush.api.push.model.audience.AudienceTarget;
- import cn.jpush.api.push.model.notification.AndroidNotification;
- import cn.jpush.api.push.model.notification.IosNotification;
- import cn.jpush.api.push.model.notification.Notification;
- publicclass Jdpush {
- protectedstaticfinal Logger LOG = LoggerFactory.getLogger(Jdpush.class);
- // demo App defined in resources/jpush-api.conf
- publicstaticfinal String TITLE = "申通快遞";
- publicstaticfinal String ALERT = "祝大家新春快樂";
- publicstaticfinal String MSG_CONTENT = "申通快遞祝新老客戶新春快樂";
- publicstaticfinal String REGISTRATION_ID = "0900e8d85ef";
- publicstaticfinal String TAG = "tag_api";
- publicstatic JPushClient jpushClient=null;
- publicstaticvoid testSendPush(String appKey ,String masterSecret) {
- jpushClient = new JPushClient(masterSecret, appKey, 3);
- // HttpProxy proxy = new HttpProxy("localhost", 3128);
- // Can use this https proxy: https://github.com/Exa-Networks/exaproxy
- // For push, all you need do is to build PushPayload object.
- //PushPayload payload = buildPushObject_all_all_alert();
- //生成推送的內容,這裡我們先測試全部推送
- PushPayload payload=buildPushObject_all_alias_alert();
- try {
- System.out.println(payload.toString());
- PushResult result = jpushClient.sendPush(payload);
- System.out.println(result+"................................");
- LOG.info("Got result - " + result);
- } catch (APIConnectionException e) {
- LOG.error("Connection error. Should retry later. ", e);
- } catch (APIRequestException e) {
- LOG.error("Error response from JPush server. Should review and fix it. ", e);
- LOG.info("HTTP Status: " + e.getStatus());
- LOG.info("Error Code: " + e.getErrorCode());
- LOG.info("Error Message: " + e.getErrorMessage());
- LOG.info("Msg ID: " + e.getMsgId());
- }
- }
- publicstatic PushPayload buildPushObject_all_all_alert() {
- return PushPayload.alertAll(ALERT);
- }
- publicstatic PushPayload buildPushObject_all_alias_alert() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.all())//設定接受的平臺
- .setAudience(Audience.all())//Audience設定為all,說明採用廣播方式推送,所有使用者都可以接收到
- .setNotification(Notification.alert(ALERT))
- .build();
- }
- publicstatic PushPayload buildPushObject_android_tag_alertWithTitle() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.android())
- .setAudience(Audience.all())
- .setNotification(Notification.android(ALERT, TITLE, null))
- .build();
- }
- publicstatic PushPayload buildPushObject_android_and_ios() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.android_ios())
- .setAudience(Audience.tag("tag1"))
- .setNotification(Notification.newBuilder()
- .setAlert("alert content")
- .addPlatformNotification(AndroidNotification.newBuilder()
- .setTitle("Android Title").build())
- .addPlatformNotification(IosNotification.newBuilder()
- .incrBadge(1)
- .addExtra("extra_key", "extra_value").build())
- .build())
- .build();
- }
- publicstatic PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {
- return PushPayload.newBuilder()
- .setPlatform(Platform.ios())
- .setAudience(Audience.tag_and("tag1", "tag_all"))
- .setNotification(Notification.newBuilder()
- .addPlatformNotification(IosNotification.newBuilder()
- .setAlert(ALERT)
- .setBadge(5)
- .setSound("happy")
- .addExtra("from", "JPush")
- .build())
- .build())
- .setMessage(Message.content(MSG_CONTENT))
- .setOptions(Options.newBuilder()
- .setApnsProduction(true)
- .build())
- .build();
- }
- publicstatic PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {
- return PushPayload.newBuilder()
-
相關推薦
【轉載】極光推送 使用例項 (一)服務端
最近一直在做後臺開發,但心裡還是總惦記著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 專案
【.NET】【MVC】我的Cloud專案(一)
一、前言 想做一個WEB程式作為練習,包含各種WEB型別的專案。希望以手機桌面APP的形式,一平臺多應用的樣子。 二、開始前的準備 1.模組劃分。部落格。許可權管理模組。後續,可能還會增加,現在以這兩個為主。 2.編寫功能例項。 使用者登入->功能模組(如部落
【Mybtais】Mybatis 外掛 Plugin開發(一)動態代理步步解析
需求: 對原有系統中的方法進行‘攔截’,在方法執行的前後新增新的處理邏輯。 分析: 不是辦法的辦法就是,對原有的每個方法進行修改,新增上新的邏輯;如果需要攔截的方法比較少,選擇此方法到是會節省成本。但是面對成百上千的方法怎麼辦?此時需要用到動態代理來實現。 場景: 例如:對原有的系統新增日誌記錄、
【 MATLAB 】向量化程式設計實踐(一)
MATLAB的特色就是向量化的程式設計,所以有必要練習如何使用向量化程式設計,用一個小例子開始,例如下面的正弦函式求和運算,要求畫出影象。 毋庸置疑,我們肯定可以使用迴圈等和其他語言一樣的方法實現