1. 程式人生 > >極光推送之伺服器端向android等客戶端推送例項

極光推送之伺服器端向android等客戶端推送例項

  1. 原文: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

    :


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

    極光伺服器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)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。

    LinuxNFS服務部署與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