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程式,這樣就可以在瀏覽器中發送通知了。