跳到主要內容

(網摘)Registering for Remote Push Notifications

Local Notifications 和 Push Notifications 是兩種式讓 iOS Application 在沒有執行的時候可以讓使用者得知訊息。使用情境上這個通知可以是訊息、一個行事曆事件或者遠端伺服器的新資料。而通知可以以 Alert 訊息或者是 Badge 數字來呈現。也可以當在 Alert 或者 badge 數字顯示時候播放聲音。


Push notifications 在  iOS 3.0 即有此功能,而 local notifications 在 iOS 4.0 才有。

先前我紀錄過 Local Notifications let users know it has something for them 如何進行,本篇則是以 iOS push notification 規劃上 client app 開發上步驟與事項為主。

要完成 Push Notifications 必須要三方的合作,分為 Push Provider、Apple push notification service、iPhone app。

iOS app for iPod/ iPhone/ iPad 必須要跟 Apple Push Notification service 註冊,如此 iOS 才能接收到 Application's provider 從遠端發佈訊息。而註冊對於 iOS app 而言分為三個步驟。

1. 呼叫 UIApplication 的 registerForRemoteNotificationTypes: method
2. 在 UIApplicationDelegate 實作 application:didRegisterForRemoteNotificationsWithDeviceToken: 來接收 device token。
3. 把 device token 非物件而是 binary 值這樣資料傳送給 Provider。

這些溝通過程在 Apple 上有個 Token Generation and Dispersal 文件可以參考整個流程。我們要注意的是,iOS application 必須每次在啟動時候要跟 Apple 註冊,取得最新版的 device token 寄給 provider。呼叫 registerForRemoteNotificationTypes: 來取得最新 device token,而這邊的類型接收 UIRemoteNotificationType,透過這邊來決定要索取通知時候支援哪些形式,Alert、badge number、sound。

如果註冊成功,APNs 會回傳 device token 到該台裝置上,透過 application delegate 進入 application:didRegisterForRemoteNotificationsWithDeviceToken:  這 method 裡面。而接下來就把這
資料傳給 provider。

如果註冊失敗,APNs 會回傳到該台裝置上 application delegate 的 application:didFailToRegisterForRemoteNotificationsWithError: method ,藉由 NSError 物件來明白說明發生了怎麼樣的狀況。大部份會碰到問題是環境設定有關,所以要參考 "Creating and Installing the Provisioning Profile" 可以取得更多細節。

每次 Application 重新啓動都要將最新版的 device token 傳給 provider 這樣才能協助確保掌握擁有最新該台有效 token。如果今天使用者擁有多台裝置,備份還原,那麼到了新的裝置上也必須執行一次來取得 notification。所以記得不要將 device token cache 起來才交給 provider,記得要取得最新的。

 
註冊遠端 notification。

成功接受到 device token 會長這樣內容 <baf649a9 bc942e91 3981a908 c623620a 571f260a ee573919 82abe637 adw39a4e>

失敗時候,例如用 iOS 開發模擬器會得到『該裝置不支援遠端通知的服務』。
當我們將 Device token 訊息傳給 provider,接下來就是等接收了。iOS app 可以接收到遠端通知的入口是在 UIApplication 的 application:didReceiveRemoteNotification: 這個 method,而 user info 則是傳入一則 JSON 的 message,可以再此解開來,做該 iOS 要運作的邏輯。格式類似   { "aps" : { "alert" : "某某超商有新活動" }, "content" : 33, "type" : "AS5" } 為例,在 APS 裡面的 key/value  可以自行定義。而 iOS app 再根據這樣的事件觸發後,導到想要顯示的 iOS 頁面 view controller 即可讓使用者知道最新活動消息。

以上為 Push notification 在開發實作上比較複雜,牽扯到 Push provider 和 iOS app 的實作,本篇以後者 iOS app 開發上要注意部份。
 

留言

這個網誌中的熱門文章

(分享)(投影片)20060926Web2.0國際研討會~投影片分享~

Web2.0 國際研討會(International Conference)一連2天在台北國際會議中心舉行,大王當然也沒錯過這場盛會~~。下面先分享大王整理的投影片資料: (點選連結前請在「 回應 」中簽個到吧~^^讓大王知道一下有多少人看過這些分享資料囉~) Web2.0國際研討會-01-TechCrunch Web2.0國際研討會-02-Flickr Web2.0國際研討會-03-salesforce.com Web2.0國際研討會-04-HeyMath Web2.0國際研討會-05-Bubbleshare Web2.0國際研討會-06-Panel Discussion Web2.0國際研討會-07-麥實創投 Web2.0國際研討會-08-智碁創投 Web2.0國際研討會-09-PChome Online Web2.0國際研討會-10-Yahoo! Web2.0國際研討會-11-無名小站 Web2.0國際研討會-12-愛情公寓 Web2.0國際研討會-13-HemiDemi Web2.0國際研討會-14-IBM Web2.0國際研討會-15-Microsoft Web2.0國際研討會-16-Panel discussion

KHS T3 前貨架安裝~

今天台北下雨,所以大王就在家把上週入手的前、後貨架裝上車囉。一開始還不知該從何下手說,也爬了一下文,確定大家都是怎麼安裝後才下手的。也整理一下大王的安裝方法,提供給大家參考囉。不過安裝的過程沒拍照,只好裝安後的樣子說明一下。 前架的左、右支架跟前剎共用機構。別怕,大膽地將固定V夾的螺絲拆下來,然後換上前架附的「比較長一點」的螺絲將貨架鎖緊。注意:別緊到連V夾都被鎖死了,因為大王一開始沒注意鎖太緊,以致V夾連動都不能動,前剎皮就一直磨到輪框。 右邊也是一樣與V夾共用機構 然後將中架用長螺絲、螺帽鎖緊 中架的螺絲、螺帽就在魔鬼沾的那個位置,一樣也是把它鎖緊 這樣就大功告成囉。 眼尖的你大概看到大王將攜車袋綁在前架上了,沒錯就是用魔鬼沾綁在這裡。L型的另一邊大王是用束線帶綁在前架上囉。這樣下面、靠車架那一側就都勞勞綁住了,讚!!

(推薦)提姆網!最便捷的網路道覽網站!

今天大王在佳文媽媽的大力推薦下到訪「 提姆網 」。TimLiao提姆網( www.timliao.com )成立於2003年五月,創辦人與網站製作皆為Tim Liao廖庭毅。網站創立的目的在 提供所有上網用戶最便捷的網路導覽網站 ,讓用戶在最短的時間內,用最便捷的方式收尋到想要的連結站。網站目前收集了台灣 3000多個大站連結 ,都是經過仔細篩選而來。此站的最大特色在於快速收尋連結站,在首頁將滑鼠移動到各式分類底下,連結就會一一顯示,不用一頁一頁的收尋,可節省用戶不少的時間。網站提供了日常生活所必備的即時資訊,讓用戶掌握最新消息。其他像是網站中的 24小時台灣免費線上電台電視 ,讓居住在國外的朋友也能即時收聽到台灣最新消息。真是個值得推薦瀏覽的網站!