通知推送在Android上的必要性與可行性
Android應用甚至擁有iOS無法想象的能力,名為Tasker的應用允許用戶創建自動化腳本,比如到地鐵入口處自動關閉3G網絡,出了地鐵再開啟之類。那是否Android就不需要通知推送了呢?答案是需要。
原因如下:
1.通知推送可以以三種方式提醒用戶(鈴聲、應用圖標上的數字或一條文本信息),這涵蓋了大部分后臺程序的功能
據我觀察,在Android系統上運行服務的軟件主要有三種目的:
1)對用戶毫無好處的流氓軟件,代表軟件CutTheRope,該游戲在后臺運行服務,但是其任何功能都不需要后臺服務的支持。唯一解釋是該應用正在收集并上傳用戶數據。
2)通訊軟件,以QQ和微博為代表。Android上的QQ收到信息后會發出鈴聲并顯示一個通知圖標。iOS的通知推送完全可以實現,只是有時會有延遲。
3)自動化軟件。這些軟件在后臺執行任務,不與用戶交互。代表為短信防火墻和Tasker。不考慮越獄的話,iOS軟件無法實現這種功能。這種軟件數量較少,使用起來也較復雜,多為高端用戶(順便說下短信防火墻曾經擋了支付寶的驗證碼短信)
可見,通知推送可以做到大部分“接收服務器通知并呈現給用戶”軟件要利用后臺服務才能搞定的功能。
2.通知推送利用單一的通訊連接與服務器通信,省電省流量
如果你的Android手機同時掛著QQ、微博、微信,用電那是嗖嗖的快呀,而iPhone沒有這個問題,掛的多頂多是通知多點惹人煩。運行后臺服務連接 服務器,不僅要占用CPU,并且維持3G網絡也是很費電的。通知推送在3G連接持續可用時(比如正在用瀏覽器上網)保持與推送服務器的通信,在手機閑置時 過一段時間才連接一次服務器(這就是QQ推送會延遲的原因),省電。推送服務器把多個消息打包,一起發送給手機,省流量。(如果經過優化,甚至可以僅啟用 2G連接接受推送消息。Android后臺服務不可能進行這樣的優化)
3.軟件提供商壓力較小
假設我是一個軟件提供商,有十萬活躍用戶,每天給每個用戶發送10條消息。如果利用通知機制,我只需要發一百萬條消息而已,甚至可以只用一個VPS就完成這點工作。而用Android的后臺服務,需要接受10萬用戶的連接,壓力與前者不在一個數量級。
4.編程簡單,可以日后升級,尤其適合消息頻率低的軟件
又要引用那條微博:
@williamlong: 不知道是不是我的錯覺還是其他什么原因,剛才我的iphone上忽然彈出一個窗口,說我已經很久沒玩捕魚達人了,然后系統就自動運行我手機上的捕魚達人應用了。
先不說這種方法是否騷擾用戶,他的確是拉來用戶的有效方法。在iOS上這太容易實現了,只要在發布軟件時請求推送權限就行了。我們看看如果在Android上實現這功能需要怎么做:
1)為軟件編寫系統服務或開機啟動功能。一個高級用戶很容易發現你在這么做,并把這功能屏蔽或直接卸載。另外,如果只是為了在半個月后彈出一條通知,這么大動干戈也太“重”了吧?
2)如果沒有前瞻性,就需要靠軟件升級。開發軟件的時候如果沒把前一條的功能寫好,你準備發布一個增加了系統服務的版本并在更新說明中寫上“增加了系統服務,以便彈出通知拉回那些很久不使用的用戶”么?
3)安卓軟件如果優化的不好,容易死機或者占用過多內存。后臺服務也很難優化對網絡的訪問:使用長連接需要保持網絡在線, 如果是過一段時間連接一次服務器,在后臺應用較多時也難以省電,不同的應用對網絡的訪問此起彼伏,網絡難以閑置。
以上的分析足以說明Android系統使用推送機制可以帶來足夠的好處。那么,是否我們很快就可以在下個版本的Android系統中見到推送機制呢?畢竟Google的技術如此強大,Android又是如此需要推送。
如果不考慮專利問題的話,Android和推送之間的***隔閡其實是策略,或者說系統定位。
iOS嚴重依賴網絡服務,一個不越獄,不綁定AppleID的iPhone幾乎什么都做不了。推送機制應用于這樣的系統順理成章。原生的Android 系統是個完全自治的環境。他不需要任何輔助就可以自主運行。以CM為例,它里面沒有Google賬戶,沒有電子市場。用戶需要單獨刷入Google服務包 才能使用Google服務。(相比之下,Nexus系列的固件其實是Google定制版的Android)通知推送這種依賴服務器的軟件如何在這種系統下 運行?
如果加上通知機制,如果默認為所有Android都使用Google的服務器,則Android本身變為一個依賴Google才能運 行的系統,這顯然違背 了Android一向“干凈”的風格。如果僅在Google服務包中提供通知服務,無疑等于半拋棄了那些沒有服務包的設備們,這也讓Android設備的 分化更為嚴重。
如果Android上有了推送功能,更可能的是系統自帶了推送功能代碼,而服務器則需要手機廠商(或者用戶)自定義。大多數廠商可以直接使用Google的推送服務,亞馬遜肯定要用自己的推送服務器,大陸行貨就請自求多福把。
軟件提供商也面臨著難題:他們要連接多個服務器(Google的和Amazon的,沒準還有QQ的和阿里云的)以便為不同的用戶群提供推送;還必須為那些手 機不支持推送服務的用戶做出兼容(捕魚達人有沒有廣告推送問題不大,QQ這種實時性高的用后臺服務更好些,微博從各個方面看利用推送都正合適,但難道要為 沒有推送的用戶單獨做一個版本?)。好消息是大部分的用戶都會在軟件提供商那里注冊(這樣提供商才知道用哪個服務器發起推送),便于追蹤用戶使用情況。
作為Android用戶,真心希望這個優秀的功能可以應用于Android。另外,也真心希望Android有更多可以被其他系統借鑒的優秀設計。
【編輯推薦】