淺析手機消息推送設計
消息是提醒用戶有更新的內容,可能短信、郵件、好友申請和日程安排。消息的作用在于主動提醒用戶,不需要主動刷新程序或者網頁去檢查更新,比如Android的sina微博,必須手動刷新程序才能更新微博或者查看好友申請。這種做法可以節省流量,對于手機包月用戶而言非常有必要的。用戶專注于當前任務時,可以接收到其他應用程序推送的消息,用戶可以及時處理多任務。
推送機制
最基礎的方法是程序實時聯網獲取消息,但是程序會占用內存,頻繁聯網耗費電量,程序各自鏈接自有服務器還會占用很多進程。以輪詢(poll)的方式實現時需要程序不定地詢問服務器是否有更新,推送(push)的好處在于有消息時由服務器告知手機客戶端,手機此時再發起更新,省電省流量,所以智能手機平臺都會有推送服務。
iPhone自3.0之后推出消息推送機制,原理是消息由服務器統一處理:
- 應用服務器Provider將消息和目標發送給APNs
- APNs查找目標iPhone并發送消息
- iPhone將消息傳遞給應用程序,再彈出Push通知
APNs和iPhone保持15分鐘的心跳式長連接,維護手機和服務器的聯系正常,否則手機會不停發起連接,直到連接到服務器為止。程序不必實時開啟和主動檢查更新,當收到APNs消息時,iPhone會彈出對話框Push消息并伴隨著聲音,用戶可以選擇“view”或者“close”。即使用戶當前處在離線狀態,用戶收到消息之后激活程序,再通過程序鏈接應用服務器下載郵件或者錄音。
WP7的也有相應的推送服務,無論程序是否開啟都可以界面頂部推送Toast Notification,并顯示10秒。WP7的Push Client負責于服務器交互,接受到消息時再傳送給相應的應用程序,而不需要應用程序各自維護一個進程。如果程序被釘在首頁,服務器推送瓦片通知(Tile Notification),改變瓦片的背景圖片、數字和標題屬性。而彈出框式的原生推送(Raw Notification)只能應用在程序開啟時,容許實時更新界面。
除了iPhone的長連接心跳查詢,PushMail的IMAP可以支持IDLE特性,郵件客戶端登錄連接服務器后不會主動檢查更新,而是停留在空閑狀態,當服務器接收到新郵件再通知郵件客戶端,此時客戶端會再查詢收郵件。或者依靠短信觸發,以看不見的短信方式觸發程序發起更新,但是短信方式的實現成本較高。(非技術人員,相關技術描述可能有誤)
推送形式
iPhone的消息彈出框如果點擊“view”會影響當前操作,但是如果點擊“close”就再也查看不到消息。由于彈出框形式的限制,沒法像Android狀態欄那樣同時顯示多條消息。分散在各個屏幕的badge難以管理,多數badge并沒有實際意義,比如花了很長時間更新可能發現某個應用程序只是改了個程序名稱。
iPhone的消息缺乏統一的管理,雖然比Android容易推送消息,但在終端沒有將消息聚合起來統一管理,所以有設計師對其加以改進,設計了Notifications App。解鎖界面顯示消息,滑動某條消息可以立即查看具體內容。對現有iPhone的界面操作的基礎上加以利用了解鎖界面。
雙擊Home鍵可以從底部調出消息,而越獄APP Notified Pro和Android一樣利用狀態欄,兩者目的都是為了全局操作??紤]到很多游戲會覆蓋狀態欄,Notifications的方式較好,同時對用戶現有操作系統影響較小。進入該程序中可以對所有消息統一編輯或者清除。
之所以需要統一管理的另外一個原因在于程序越來越多,消息也越多,個別應用程序為了吸引用戶注意力,會頻繁推送消息,導致消息泛濫和影響用戶對重要消息的關注程度。
終端推送設計
除了要了解OS對消息的處理機制和展現形式,消息自身的眾多屬性可以在設計中加以利用,比如消息的元數據、狀態、優先級和同步方式等等。
時效性強的短信、微博私信和郵件處理的優先級更高,可以優先顯示在解鎖界面。好友申請、系統消息和好友評論等優先級稍低,只以數字提醒并且不帶聲音,甚至只能在程序開啟時提醒。未來情景式消息推送會在手機端發揮作用,優先級會依照信息對用戶的有效性有所提升,比如到了某了商店附近觸發折扣信息的推送。
服務器在推送消息時,如果可以附帶更多樣的處理方式、比如查看完整的140字微博、回復、忽略、已讀和拒絕,不進入其他程序(如Facebook和短消息)就能操作會提高處理的效率,正如MIUI在主頁收到短信時可以立即回復。
程序應該智能識別處理狀態,比如已讀帶處理的消息標記為badge不再重復聲音提醒,好友申請可以分為同意、拒絕和忽略,對于在各種手機端被用戶忽略的消息可以設定為垃圾消息。
多臺設備的消息可以同步處理,如iPhone端的消息未讀,切換到PC端時,查閱了更新的內容之后,iPhone端的消息可以取消推送。
未來的消息推送很有可能會向WP7那樣往集成化的方向發展,其重要性將越來越高。
參考資料:
- Apple Push Notification Service
- Android Push Applications
- Windows Phone 7 Push Notification
- BlackBerry Push APIs
- An early look at DroidPush API
- iPhone的Push(推送通知)功能原理淺析
- http://iosnotifications.wordpress.com/
- 互聯網架構設計中的poll和push
- 偷窺iPhone Push Notification的幕后
- notifications?概念設計
- 關于Pushmail那些事兒
來源:http://daichuanqing.com
- 目前還沒評論,等你發揮!