摘要:這是一篇編譯的文章(因為我很少親自寫純翻譯的文章),內容及乳品均出自 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:]方法,代碼如下:
- - (BOOL)application:(UIApplication *)application
- didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- ...
- // Register for push notifications
- [application registerForRemoteNotificationTypes:
- UIRemoteNotificationTypeBadge |
- UIRemoteNotificationTypeAlert |
- UIRemoteNotificationTypeSound];
- ...
- }
2.一旦成功,以上方法會在app delegate中執行回調方法[application:didRegisterForRemoteNotificationsWithDeviceToken:]
。我們需要實現這個方法,用它來告知Parse我們的裝置資訊。代碼如下:
- - (void)application:(UIApplication *)application
- didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken
- {
- [PFPush storeDeviceToken:newDeviceToken]; // Send parse the device token
- // Subscribe this user to the broadcast channel, ""
- [PFPush subscribeToChannelInBackground:@"" block:^(BOOL succeeded, NSError *error) {
- if (succeeded) {
- NSLog(@"Successfully subscribed to the broadcast channel.");
- } else {
- NSLog(@"Failed to subscribe to the broadcast channel.");
- }
- }];
- }
3.廣播頻道(broadcast channel)用於同時聯絡到所有使用者,所以很多時候開發人員可能需要自己建立一些更精準化的頻道。一旦推播通知被接受但是應用不在前台,就會被顯示在iOS推送中心。反之如果應用剛好處於活動狀態,則交於應用去自行處理。具體我們可以在app delegate中實現[application:didReceiveRemoteNotification]方法。一下範例程式碼只是簡單的將這一需求交由Parse去處理,Parse會建立一個模態警報顯示推送內容。
- - (void)application:(UIApplication *)application
- didReceiveRemoteNotification:(NSDictionary *)userInfo {
- [PFPush handlePush:userInfo];
- }
好了,現在開始在你的iOS裝置上運行一下,一切順利的話,就可以看到從使用者到推播通知之間的一條模態警報請求許可。
發送推播通知
從Parse website發送
Parse允許你從Parse website發送推播通知,API和SDK均可。找到Parse app,選擇Push Notifications標籤,你可以在文字框裡添加一條訊息,然後廣播給所以使用者。你可以使用Parse web API通過發送一個POST請求來發送推送到任何頻道。以下樣本是一條廣播通知,內容是“Hello World”,使用curl進行發送。
- curl -X POST "https://api.parse.com/1/push" -H "Content-Type: application/json" \
- --data '{"key":"your_push_master_key", "channel":"", "type":"ios",\
- "data":{"alert":"Hello World!"}}'
從應用發送
從應用發送需要開啟Parse app中的Client push enabled功能。實現從應用發送推播通知的方式多種多樣,你可以在iOS API documentation中找到一切。
- // Broadcast "Hello World"
- [PFPush sendPushMessageToChannelInBackground:@"" withMessage:@"Hello World!"];
好了。教程就到這裡結束了,預祝大家開發順利。如果大家有好的應用,可以聯絡 @CSDN移動 或者發送郵件到
yangpf@csdn.net ,向我們進行推薦。