推送詳解

摘要:這是一篇編譯的文章(因爲我很少親自寫純翻譯的文章),內容及乳品均出自 Parse.com的iOS開發教程 ,同時作者還提供了 視頻講解 ,願意聯繫聽力的開發者可以去看看( 別跟我說視頻看不了 )。本文將帶領開發者一步一步向着iOS推送通知的深處探尋,掌握如何配置iOS推送通知的奧義。 介紹一點點背景資...

這是一篇編譯的文章,內容均出自Parse.com的iOS開發教程,同時作者還提供了視頻講解。本文將帶領開發者一步一步向着iOS推送通知的深處探尋,掌握如何配置iOS推送通知的奧義。

介紹一點點背景資料

衆所周知,使用推送通知是一個很棒的、給應用添加實時消息通知的方式。這樣做的結局是,開發者和用戶之間,彼此永遠保持着一種令人愉悅的親密關係。

然而不幸的是,iOS的推送通知並非那麼容易駕馭,往往會搞的開發者精疲力盡,灰心喪氣,無法持久。現在,救星來了!只要通讀本教程,你就能擺脫這些煩惱,成爲一名活力四射,精壯(Robust I mean!)的開發者。

正式開始之前的準備工作

我們先來從Apple Developer網站上創建一個關聯App ID和開發供應配置文件的SSL證書,來開始這段美好的教程。接着,我們看看在iOS下是如何在解析網站(Parse website)配置解析程序(Parse app)的。最後,我們把這些理論付諸實踐,創建一個帶有推送功能的App,並且將消息推到用戶。

在開始這段美好旅程之前,大家一定要注意iOS模擬器是不支持推送的,所以你必須想辦法找一臺真機過來。還有就是要有蘋果開發者協議,之後才能在真機上面進行開發和測試。

創建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的所有的值全部設置好。

4.選擇左手邊Targets下面的項目名稱,再次找到Build Settings,來到Code Signing Identity區域,確保所有的值都和新的provisioning profile保持一致。

代碼環節

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

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

  1. - (BOOL)application:(UIApplication *)application 
  2.  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
  3.     ... 
  4.     // Register for push notifications 
  5.     [application registerForRemoteNotificationTypes:  
  6.                                  UIRemoteNotificationTypeBadge | 
  7.                                  UIRemoteNotificationTypeAlert |              
  8.                                  UIRemoteNotificationTypeSound]; 
  9.     ... 

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

  1. - (void)application:(UIApplication *)application  
  2. didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken 
  3.     [PFPush storeDeviceToken:newDeviceToken]; // Send parse the device token 
  4.     // Subscribe this user to the broadcast channel, ""  
  5.     [PFPush subscribeToChannelInBackground:@"" block:^(BOOL succeeded, NSError *error) { 
  6.         if (succeeded) { 
  7.             NSLog(@"Successfully subscribed to the broadcast channel."); 
  8.         } else { 
  9.             NSLog(@"Failed to subscribe to the broadcast channel."); 
  10.         } 
  11.     }]; 

3.廣播頻道(broadcast channel)用於同時聯繫到所有用戶,所以很多時候開發者可能需要自己創建一些更精準化的頻道。一旦推送通知被接受但是應用不在前臺,就會被顯示在iOS推送中心。反之如果應用剛好處於活動狀態,則交於應用去自行處理。具體我們可以在app delegate中實現[application:didReceiveRemoteNotification]方法。一下示例代碼只是簡單的將這一需求交由Parse去處理,Parse會創建一個模態警報顯示推送內容。

  1. - (void)application:(UIApplication *)application  
  2. didReceiveRemoteNotification:(NSDictionary *)userInfo { 
  3.     [PFPush handlePush:userInfo]; 

好了,現在開始在你的iOS設備上運行一下,一切順利的話,就可以看到從用戶到推送通知之間的一條模態警報請求許可。

發送推送通知

從Parse website發送

Parse允許你從Parse website發送推送通知,API和SDK均可。找到Parse app,選擇Push Notifications標籤,你可以在文本框裏添加一條消息,然後廣播給所以用戶。你可以使用Parse web API通過發送一個POST請求來發送推送到任何頻道。以下示例是一條廣播通知,內容是“Hello World”,使用curl進行發送。

  1. curl -X POST "https://api.parse.com/1/push" -H "Content-Type: application/json" \ 
  2. --data '{"key":"your_push_master_key""channel":"""type":"ios",\ 
  3. "data":{"alert":"Hello World!"}}' 

從應用發送

從應用發送需要開啓Parse app中的Client push enabled功能。實現從應用發送推送通知的方式多種多樣,你可以在iOS API documentation中找到一切。

  1. // Broadcast "Hello World" 
  2. [PFPush sendPushMessageToChannelInBackground:@"" withMessage:@"Hello World!"]; 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章