天天看點

IOS的推送通知詳解

IOS的推送是蘋果更新IOS4.0之後新加的技術,推送技術考驗了你對蘋果Developer所有證書的了解。

建立SSL證書

首先,需要在蘋果開發者網站上建立一個App ID以及關聯的SSL證書,有了這個證書,解析伺服器才能将找到你的App ID,繼而将通知推送到該應用。

首先的首先,我們需要有一個證書簽名請求檔案,之後建立SSL證書才有意義。建立檔案的方法如下:

1.在Mac上運作鑰匙串通路(keychain)

2.選擇鑰匙串通路 > 證書助理 > 從證書頒發機構中請求一個證書

3.輸入你的名字和郵件位址,CA郵件位址預設就可以,不要試圖去進行任何改動。

4.選擇“儲存到硬碟”,這樣就會将剛建立的證書請求檔案下載下傳到電腦桌面上了。

建立并調教一個App ID

每個安裝在你開發者裝置上的iOS程式都需要一個獨有的App ID,友善起見,App ID以反向路徑規則命名,形如com.parseSampleApp,但是一定要注意App ID裡不能包含星号("*")。建立步驟如下:

1.登陸網站Apple Developer Member Center并進入iOS Provisioning Portal。

2.從左邊欄裡點選App IDs。

3.選擇New App ID,然後建立一個新的App ID。一定要確定Bundle Identifier一欄中沒有星号。

4.在你的App ID下面找到Configure,選中。

5. 将“Enable for Apple Push Notification service”勾選上,然後點選Development Push SSL Certificate下面的Configure,然後會出現Apple Push Notification service SSL Certificate Assistant設定向導。

6.點選Continue繼續,然後點選Choose File,選中剛建立見的.certSigningRequest檔案。

7.點選Generate開始生成,然後點選Download下載下傳生成的SSL證書。

8.通過keychain程式來安裝下載下傳好的SSL證書。

9.接着在“我的證書”選項先面,找到你剛才安裝名稱形如“Apple Development IOS Push Services: xxx”的證書。

10.輕按兩下證書,選擇“導出”,導出後的檔案字尾名為.p12。這個時候千萬注意!出現密碼提示的時候一定不要添任何東西。

這 裡值得注意的一點就是,至此我們隻是将應用的推送通知功能在開發模式中開啟了,是以應用開始正式釋出之前,一定記得要将第四步到第九步的流程重新走一遍, 并将第五步中的“Development Push SSL Certificate”改成“Production Push SSL Certificate”。這樣就完美了。

建立一個Provisioning Profile(配置簡介)

Provisioning Profile會驗證運作所開發應用的裝置。而且不管你是建立一個App ID還是去修改現成的,都得重新生成并安裝一遍Provisioning Profile。步驟如下:

1.在iOS Provisioning Portal中選擇Provisioning變遷。

2.點選New Profile

3.填好對應的資訊,確定一下三項(developer certificate、上面剛建立好的App ID以及用于測試的裝置)都沒有遺漏,全都選中。

4.點選Actions一欄下面的Download按鈕下載下傳生成好的Provisioning Profile。

5.輕按兩下下載下傳好的檔案,預設是由iPhone Configuration Utility程式開。

配置Parse App

要想在推送通知中使用Parse功能,必須将此項特性設定成開啟狀态,然後将上面建立好的推送SSL證書上傳上去。步驟如下:

1.在Parse website上找到你的Parse app,然後選擇Settings标簽頁。

2.在iOS Push Notification Settings下面,點選Choose File,然後将之前用keychain導出的.p12檔案上傳上去。

3.如果希望使用者能夠發送推送通知,我們需要将Client push enabled?選項中的Yes勾選上。這個功能對于像即時聊天的軟體非常有用,我們現在将它勾選上,當然開發者需要自行決定是否要開啟這項功能。

4.點選Save儲存。

建立一個具備推送通知的應用

首先,我們需要先對Xcode項目進行一些設定,確定App ID和provisioning profile都被設定成良好的狀态。做開發嗎,

1.在Supporting Files檔案夾下選中ProjectName-Info.plist,對右側視圖中的Bundle Identifier選項進行修改,和你自己建立的App ID保持一緻(形如:com.parseSampleApp)。

2.在左側的菜單中選中剛建立的project檔案,在下面找到Build Settings然後搜尋Code Signing Identity。

3.将對應provisioning profile的所有的值全部設定好。

接下來就開始進入程式設計模式了。我們需要對應用程式代理(app delegate)進行少量的修改,進而使得我們的應用可以接受到推送通知。步驟如下:

1.注冊裝置需要在app delegate的[application:didFinishLaunchingWithOptions:]方法中調用[application registerForRemoteNotificationTypes:]方法,代碼如下:

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
  2.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
  3.     self.window.backgroundColor = [UIColor whiteColor]; 
  4.     [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert]; 
  5.     [self updateVersionMethod]; 
  6.     [self.window makeKeyAndVisible]; 
  7.     return YES; 

2.一旦成功,以上方法會在app delegate中執行回調方法[application:didRegisterForRemoteNotificationsWithDeviceToken:] 。我們需要實作這個方法,用它來告知Parse我們的裝置資訊。代碼如下:

  1. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  
  2.     //此處可以根據自己的程式的需要進行網絡請求的解析
  3. }  

到此為止我們的用戶端的基本的推送設定就完成了下面我們進行性伺服器端口的設定

蘋果的推送是基于SSL是以以OC,php和java的伺服器都可以設定推送

首先打開終端:輸入一下指令合成伺服器需要的證書。

1、将aps_developer_identity.cer轉換成 aps_developer_identity.pem格式。

  openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM

  2、将p12格式的私鑰轉換成pem,需要設定4次密碼,密碼都設定為:abc123。

  openssl pkcs12 -nocerts -out PushChat_Noenc.pem -in PushChat.p12

  3、用certificate和the key 建立PKCS#12格式的檔案。

  openssl pkcs12 -export -in aps_developer_identity.pem -inkey PushChat_Noenc.pem -certfile PushChat.certSigningRequest -name aps_developer_identity -out aps_developer_identity.p12

  這樣我們就得到了在.net應用程式中使用的證書檔案:aps_developer_identity.p12。

在.net應用程式中發送通知。

  有個開源的類庫:apns-sharp。

  位址是:http://code.google.com/p/apns-sharp/。

  我們下載下傳源代碼,對裡面的JdSoft.Apple.Apns.Notifications做相應的調整就能用了。