跳到主要內容

(網摘)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 開發上要注意部份。
 

留言

這個網誌中的熱門文章

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

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

(分享)(投影片)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

(分享)(教學)如何在Blogger裡加入Flash mp3 播放器

你是不是也常看到其它Blogger裡有一個漂亮的Flash mp3播放器呢?過去大王也曾想過在Blog裡加上mp3播放器,不過一直沒有這樣玩,因為它得要把一些檔案放在自己的網路空間裡。此外,歌曲也必需存放在自己的空間裡。所以大王就沒有把它加到自己的Blog裡囉。不過這個Flashmp3Player已經發展到3.2版囉~可以透過xml來編輯自己的音樂清單,並且音樂曲目的連結可以用站外的檔案進行連結哦!這就又讓大王想在Blogger裡加上一個音樂播放器了,馬上來玩玩看囉^^。 step1.首先你必需下載這個Flashmp3播放器:[ 下載連結 ][ 作者Blog ] step2.打開playlist.xml開始編輯自己的播放清單囉~歌曲可以是在網路上的任何位置 歌曲的搜尋可以試試 Tom.com音樂搜尋引擎 囉~ step3.將mp3player.swf、ufo.js、playlist.xml,三個檔案上傳到自己的網頁空間。(ex.Yahoo、Hinet、Seednet...) 記得要將檔案的連結位置記下來囉,可以在檔名上按滑鼠右鍵複製捷徑。然後把它先存在你的記事本中囉~ 三個檔案的位置都要記錄下來哦^^ step4.打開你blogger的樣版,把下面的語法加到<head></head>之間 <script type="text/javascript" src=" 在這中間把剛才上傳的ufo.js的網址貼上來,例如http://home.kimo.com.tw/kelvinwang1977/ufo.js "></script> step5.接著把下面的語法加到<body></body>之間。 如果你用的也是blogger的空間,那麼就把它放在<!-- Begin #sidebar -->到</body>之前,找個喜歡的位置把它佈置進去囉。語法如下: <embed FlashVars="file= 在這中間把剛才上傳的playlist.xml的網址貼上來,例如http://homelf.kimo.com.tw/kelvinwang1977/playlist.xml &repeat=true...