1、ios用戶端程式設計
推送通知技術在mac os x和ios系統上都可以運作,我們本章主要介紹ios用戶端程式設計,推送通知的程式設計比較簡單,程式設計的關鍵是獲得令牌,這是從apns傳回的,然後還有把送出給内容提供商。下面我們看看開發之前的一些準備工作。
配置xcode工程
編寫ios推送應用需要在xcode工程中進行一些配置,這些配置是主要是設定代碼簽名辨別,代碼簽名辨別的前提要有配置概要檔案(provisioning profiles)。
有了配置概要檔案即可以設定代碼簽名辨別了,需要下載下傳概要檔案到本地,代碼簽名辨別需要選擇這個配置概要檔案。選擇tagets→mynotes→code signing identity,選擇你自己的代碼簽名辨別。

設定完成之後可以開始編碼工作了。
代碼實作
推送通知的代碼實作主要分為兩個步驟,第一步注冊接收通知,第二步接收注冊結果。這些工作都是在應用程式委托對象appdelegate中實作的。
我們先看看注冊部分的代碼:
注冊過程比較長,它通過apns從蘋果公司傳回,注冊結束後的回調方法代碼:
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代碼:
打開終端視窗執行如下指令:
回車後需要輸入密碼,這個密碼是導出“證書.p12”時候設定的密碼。
php代碼編寫完成可以運作php了,有兩種方法可以運作,一種是把這個檔案放到apache http伺服器目錄下,并保證apache下安裝和 php,然後用浏覽器運作,在浏覽器中輸入http://localhost/phppns/pusher.php,這個url是我自己 apache http伺服器上的php檔案。
另外一種方法,簡單的多,我們不需要安裝apache http伺服器,隻需要安裝了php解釋器就可以了,我們在終端中運作下面的指令:
$ php -f pusher.php
連接配接ok
發送消息:{“aps”:{“alert”:”\u65b0\u5e74\u597d. from php”,”badge”:11,”sound”:”default”}}
這樣就可以推送通知了,如果一切正常推送成功,使用者的裝置就可以接收到通知了。
使用java推送服務
上面我們介紹了php實作的推送服務程式,使用其它語言編寫基本的過程也一樣的,這一節我們就介紹java推送服務程式。由于具體的流程與php一 樣,這裡我們就不再自己編寫java的實作代碼,而是使用别人已經封裝好的javapns(http://code.google.com/p /javapns/)類庫,它封裝了socket實作細節問題,開發起來變的比較簡單了。
下面代碼是實作了推送的java代碼:
上面的代碼還依賴與下面的類庫: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程式,這樣就可以在浏覽器中發送通知了。