極光推送之伺服器端向android等客戶端推送例項
-
原文:http://blog.csdn.net/u014733374/article/details/43560983
找了兩天,總算找到一個靠譜的了。開始測試的時候總是報各種錯誤,尤其是不能找到audience的錯誤,偶然想到,用極光開放平臺整合的客戶端,果不其然OK了。
java端示例demo 下載位置 https://github.com/jpush/jpush-api-java-client/releases
最近一直在做後臺開發,但心裡還是總惦記著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 cn.jpush.api.push.model.Platform;
- 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()
- .setPlatform(Platform.android_ios())
-
相關推薦
極光推送之伺服器端向android等客戶端推送例項
原文:http://blog.csdn.net/u014733374/article/details/43560983 找了兩天,總算找到一個靠譜的了。開始測試的時候總是報各種錯誤,尤其是不能找到audience的錯誤,偶然想到,用極光開放平臺整合的客戶
Android SIP客戶端無法連線Windows下miniSIPServer伺服器的問題解決
一、問題背景 網上miniSIPServer安裝的教程一堆,隨便找找就有,比如這篇,我就不重複寫了,大家沒有安裝的可以先看看。安裝好啟動後,我遇到了別人都沒有遇到的問題——Android上的SIP客戶端無法連線Windows系統上的miniSIPServer伺服器。 交待
寫了個Android聊天客戶端框架,基本聊天功能、資料庫、伺服器都有。大家可以看一看。已經開源
寫了個Android聊天客戶端框架,基本聊天功能、資料庫、伺服器都有。大家可以看一看。已經開源(希望兩個手機通訊的話,改一下pushid就可以) 幾點說明: 1:包含的基本功能。: 1.1比如gif動態表情展示、語音、聊天表情、拍照、多圖的傳送、大圖片的處理、listview快取的處理等。 &n
Android應用經典主介面框架之二:仿網易新聞客戶端、CSDN 客戶端 (Fragment ViewPager)
第二種主介面風格則是以網易新聞、鳳凰新聞以及新推出的新浪部落格(閱讀版)為代表,使用ViewPager+Fragment,即ViewPager裡介面卡裡放的不是一般的View,而是Fragment。所以介面卡不能繼承PagerAdapter,而要繼承FragmentPager
Android專案開發筆記之登入註冊模組實現(客戶端+服務端)
寫在前面 斷斷續續開發了幾個月的App終於告一段落,雖然它可能還很不完美,不過作為上手Android的第一個完整專案,確實從中學到了蠻多,所以開個系列記錄一下~本篇先從基本上每個App都會有的登入註冊講起,包含自動登入、記住密碼功能的實現=w= 實現
java做伺服器,android做客戶端,實現資料傳輸
許久未動筆,有個小專案開始動工。 需要用一臺windows電腦做伺服器,在android端與其進行資料交換,實現一些業務。 簡單起見,用java寫這個伺服器,以前沒做過,試試水。很簡單的程式碼,純粹找思路。 伺服器端程式碼: package com.test; impor
Android手機客戶端通過JSP實現與Tomcat伺服器端通訊(Msql資料庫,Json作為載體)--服務端程式碼
伺服器端主要程式碼: 1.首先構建一個Person類,用來儲存使用者資訊 public class Person private String name; private String address; private Integer age; public P
黑馬程式設計師 【】java學習之路——TCP(三)客戶端上傳檔案到伺服器
import java.net.*; class TextClient {public static void main(String[] args) throws Exception{Socket s = new Socket("192.168.1.104",10010);BufferedReader b
Android:客戶端和伺服器之間傳輸資料加密
Android客戶端與伺服器進行資料傳輸時,一般會涉及到兩類資料的加密情況,一類是隻有建立者才能知道的資料,比如密碼;另一類是其他比較重要的,但是可以逆向解密的資料。 第一類:密碼類的資料,為了讓使用者放心註冊,密碼類的資料的加密一般都是經過
iOS推送小結(證書的生成、客戶端的開發、服務端的開發)
1.推送過程簡介 (1)App啟動過程中,使用UIApplication::registerForRemoteNotificationTypes函式與蘋果的APNS伺服器通訊,發出註冊遠端推送的申請。若註冊成功,回撥函式application:(UIApplication *)applicatio
C#做伺服器,Android做客戶端,完成Socket通訊
先說幾句廢話,我沒學過java語法,所以寫起來很痛啊,只能多百度,多看別人的程式碼~ 1.按照慣例,先寫一下遇到的問題: 1.java.net.SocketException: socket failed EACCES (Permission denied) 初始化Sock
Android:解決客戶端從伺服器上獲取資料亂碼的方法
向伺服器傳送HTTP請求,接收到的JSON包為response,用String content = EntityUtils.toString(response.getEntity(),"utf-8");解碼還是出現了中文亂碼,在後面加了 String name
python之自定義異步IO客戶端
class close sel 封裝 [0 urn 簡單 pytho syn #!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # date: 2017/5/16 15:04
zabbix系列之使用ansible批量部署zabbix客戶端(二)
zabbix_agent ansible 批量部署客戶端 ansible ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
Linux之NFS服務部署與Windows客戶端掛載
NFSLinuxwindowsFS服務(Windows 客戶端+Linux 服務端) Windows 客戶端 1.添加NFS服務2.進入CMD界面查看NFS添加是否成功。3.掛載遠程文件目錄至本地4.卸載掛載文件 Linux服務端 1.查看Linux系統是否安裝rcpbind,nfs組件(如未安裝請先安裝)。
C# 之 獲取服務器IP,客戶端IP以及其它
output ipaddress ons use variables 例子 mac地址 user nag 本文主要是從網絡上搜索的文章進行參考,也是提供一個大概的方向和思路吧。當然如果有能用的代碼,可直接復制過去根據自己的情況修改和使用。 一、思路(主要用於局域網內
FastDFS伺服器叢集部署和整合客戶端到SpringBoot
FastDFS是一個開源的輕量級分散式檔案系統,它對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題,同時也能做到在叢集環境下一臺機子上傳檔案,同時該組下的其他節點下也備份了上傳的檔案。做分散式系統開發時,其中要解決的一個問題就是圖片、音視訊
KepServer作為OPC UA伺服器以及建立OPC UA客戶端
PS:KepServer如何連線PLC請看我其他部落格內容。 初次嘗試的時候一步步操作即可,可以不看附帶的官方介紹,詳細瞭解的可以看下 一、配置OPC UA伺服器 OPC UA 官方介紹: OPC統一體系結構(UA)是OPC基金會在幾十個成員組織的幫助下建立的一個開放標準。雖然U
2.SDL2_net TCP伺服器端和多個客戶端
上一節初步瞭解到了伺服器和客戶端的通訊,並且由於受到程式碼的限制,只能是單個客戶端,而且伺服器無法向客戶端傳送資訊,本節使用SDL_Net的套接字列表(Socket Set)特性來實現比上一節功能更強的程式碼,即一個伺服器對應多臺客戶端。 一.專案結構CMakeLists.txt的編寫 上一
Socket跨平臺通訊——服務端Android、客戶端iOS
本文講述了: 1、如何在Android上搭建Mina服務端(使用Mina 2.0.15、程式設計環境Eclipse); 2、如何在iOS上建立Socket客戶端(使用CocoaAsyncSocket第三方通訊框架、Swift3.0); 3、Android iOS間的TCPS