為什麼安卓的訊息推送沒有蘋果好用?

最近有小朋友問我:“缺姐姐,缺姐姐,為什麼我從蘋果手機換成安卓手機後收到訊息經常延遲,甚至收不到呢?太誤事了。”

其實這是ios系統和Android系統推送機制不同導致的,那我就簡單講講二者的不同吧。

iOS的推送(APNs,即Apple Psuh Notification Service),是通過蘋果自己的APNs服務進行的,蘋果的每一臺iPhone裝置都有一個對應特定APP的唯一的裝置標示: deviceToken,拿到這個deviceToken後我們將這個deviceToken發給我們自己的伺服器,當有訊息需要被推送時,我們自己的伺服器會將訊息按指定的格式結合裝置的deviceToken一併打包 然後發給APNs伺服器,APNs將新訊息推送給我們的裝置上,然後就在裝置的螢幕上顯示出來了。

舉個簡單的例子:微博的伺服器會給蘋果公司對應的伺服器發出通知,然後蘋果伺服器將要推送的內容下發到你的手機APP裡,然後你開啟就能看到推送的訊息了。通知統一走蘋果通道,所以管理很方便。

Android系統推送機制跟iOS完全相反,iOS是統一由系統下發,而安卓每個需要後臺推送的應用有各自的單獨後臺程序,才能和各自的伺服器通訊,交換資料。雖然Android 也有類似 APNS 的 GCM(Google Cloud Message),屬於開發者可選,非強制,但是Android的GCM在國內基本上是不可用的。為什麼呢?一是國內大部分Android手機都不帶Google服務,也就用不了GCM,這是主要的問題;二是在國內Google的服務一般都不太穩定,原因你懂的。

所以現在在做訊息推送的時候Android平臺採用伺服器與裝置直接拉一條長連線的方式實現功能。但是如果自己搭建伺服器的話那無論是穩定性還是速度上效果都會很差,因此安卓大多會整合第三方服務廠商的推送。但是即使如此,每一個應用都單獨設定一個常駐程序收發訊息,那也真的是徒增功耗,耗電會異常嚴重。

前幾年萬眾矚目的統一推送聯盟到現在還沒動靜,其實就是根本沒有多少APP適配,APP巨頭騰訊系和阿里系也不會去帶頭,其中的利益錯綜複雜,這裡就不展開了,除非工信部強勢介入,當然這個可能性嘛。。。在國內想及時收到推送訊息還是備上一款iPhone吧。