推播通知iOS用戶端編寫實現及推送伺服器端編寫

來源:互聯網
上載者:User

1、用戶端編程

推播通知技術在Mac OS X和iOS系統上都可以運行,我們本章主要介紹iOS用戶端編程,推播通知的編程比較簡單,編程的關鍵是獲得令牌,這是從APNS返回的,然後還有把提交給內容供應商。下面我們看看開發之前的一些準備工作。

 

配置Xcode工程

編寫iOS推送應用需要在Xcode工程中進行一些配置,這些配置是主要是設定程式碼簽署標識,程式碼簽署標識的前提要有配置概要檔案(Provisioning Profiles)。

有了配置概要檔案即可以設定程式碼簽署標識了,需要下載概要檔案到本地,程式碼簽署標識需要選擇這個配置概要檔案。選擇TAGETS→MyNotes→Code Signing Identity,選擇你自己的程式碼簽署標識。

設定完成之後可以開始編碼工作了。

代碼實現

推播通知的代碼實現主要分為兩個步驟,第一步註冊接收通知,第二步接收註冊結果。這些工作都是在應用程式委派物件AppDelegate中實現的。

我們先看看註冊部分的代碼:

- (BOOL)application:(UIApplication **||= 

 

 

註冊過程比較長,它通過APNS從蘋果公司返回,註冊結束後的回調方法代碼:

- ()application:(UIApplication**%*tokeStr = [NSString stringWithFormat: ([tokeStr length] == * = [NSCharacterSet characterSetWithCharactersInString:= [tokeStr stringByTrimmingCharactersInSet:= [tokeStr stringByReplacingOccurrencesOfString:  withString:*strURL = @”http:*url =*request = forKey:- ()application:(UIApplication**%

 

 

2、推送服務端編程

內容提供者接收到裝置的令牌並儲存起來,在有新的內容需要推送的時候,他們將啟動一個服務程式逐個裝置推送他們的內容。在推送具體的過程中並非直接 由內容提供者,直接發送給使用者裝置,而是服務程式與APNS通訊建立信任連接,然後把資料推送給APNS,再由APNS利用安全通道推送給使用者裝置。

如果要編寫內容提供者的推送服務程式,我們需要進行SSL認證編程,以及構建APNS資料包,資料包分為3個主要部分:Command(命令)、deviceToken(令牌)和Payload(載荷)。載荷不能超過256位元組,是JSON格式,例如:


 

 

作為推出服務程式可以使用很多電腦語言實現,如果從便於管理角度看,使用PHP、Java和.NET,甚至是Note.js都是可以選擇的。本書重點介紹PHP和Java編寫推送服務程式。

使用PHP實現推送服務

PHP是非常不錯的伺服器端指令碼,這麼多年來沒有被JavaEE和.NET蠶食掉,說明它有過人之處。PHP編程簡單很多人原意使用,實現本章推送服務也很簡單。下面代碼是實現了推送的PHP代碼:

<?== array(“aps” => array(“alert” => ’新年好. from PHP’,”badge” => ,”sound”=>’== ”apns-== stream_socket_client(“ssl: (!== chr() . pack(“n”,) . pack(“H*?>

 

 

開啟終端視窗執行如下命令:

$ openssl pkcs12 -in 

Enter Import Password:

MAC verified OK

斷行符號後需要輸入密碼,這個密碼是匯出“認證.p12”時候設定的密碼。

PHP代碼編寫完成可以運行PHP了,有兩種方法可以運行,一種是把這個檔案放到Apache HTTP伺服器目錄下,並保證Apache下安裝和 PHP,然後用瀏覽器運行,在瀏覽器中輸入http://localhost/phpPNs/Pusher.php,這個URL是我自己 Apache HTTP伺服器上的PHP檔案。

另外一種方法,簡單的多,我們不需要安裝Apache HTTP伺服器,只需要安裝了PHP解譯器就可以了,我們在終端中運行下面的指令:

$ php -f Pusher.php

串連

發送訊息

這樣就可以推播通知了,如果一切正常推送成功,使用者的裝置就可以接收到通知了。

使用

上面我們介紹了PHP實現的推送服務程式,使用其它語言編寫基本的過程也一樣的,這一節我們就介紹Java推送服務程式。由於具體的流程與PHP一 樣,這裡我們就不再自己編寫Java的實現代碼,而是使用別人已經封裝好的javapns(http://code.google.com/p /javapns/)類庫,它封裝了socket實現細節問題,開發起來變的比較簡單了。

下面代碼是實現了推送的Java代碼:

   = /認證.p12″, ”51work6.com”, 

 

上面的代碼還依賴與下面的類庫:bcprov-jdk15-146.jar、JavaPNS_2.2.jar和log4j-1.2.15.jar。 其中bcprov-jdk15-146.jar和JavaPNS_2.2.jar可以在http://code.google.com/p /javapns/下載到。log4j-1.2.15.jar到http://logging.apache.org/log4j/1.2 /download.html下載。

這個Java程式的運行我們就不再介紹了,它是一個Java Application可以在有jre環境運行,我們可以把它做成JavaWeb程式,這樣就可以在瀏覽器中發送通知了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.