消息推送可以說是目前除各類App除自身功能之外 最重要的功能之壹 。小到鬧鐘、 日程提醒 ,大到各種 社交軟件 、資訊類軟件的消息推送都離不開這壹功能。
不過對於不少在iPhone用戶可能都遇到過因為消息推送與消息刷新加載、延遲或者 錯過微信電話等情況 。想了解iPhone推送消息的 原理以及如果解決 ,不妨接著往下看。
蘋果推送服務(Apple Push Notification service,簡稱APNS)是在隨著iOS 3.0就開始推出的壹項服務,推送過程大致分為三個階段。
第壹階段:App會把要發送的消息、接收端iPhone的標識 打包 , 發給APNS 。第二階段:APNS在自身的已註冊Push服務的iPhone列表中, 查找有相應標識的iPhone ,並把消息 發送 到iPhone。第三階段:iPhone把發來的消息 傳遞給相應的應用程序 ,並且按照設定彈出Push通知。
簡而言之,只要用戶開啟了推送權限,業務服務器就可以 隨時 通過 調用 APNS服務向用戶推送通知,而 不需要App常駐後臺 。
其實原生的安卓也有類似的谷歌推送服務GMS(google massages service)。但是目前國產手機的操作系統並沒有加入這壹功能,基本都是使用 各自的消息推送平臺 。比如小米的Mi push和華為的push kit等等。
在這之外仍舊有壹些應用不通過這壹類推送服務,而是App自身通過後臺服務與業務服務器維持長連接通信,即通過 App駐留在後臺的方式 正常推送消息。
相比之下,蘋果可以消息通知上比較集中和統壹。iPhone的消息推送不需要有後臺進程常駐的,內存使用更少, 電量也更少 。而安卓設備因為消息推送不同意容易造成壹些App關閉後臺後無法接收到消息、或者App後臺 自啟動 造成的 額外耗電問題 。
但在實際體驗上,用戶對於這壹差別產生的耗電量liang差距可能 感知並不明顯 。而多數iPhone用戶因為 推送機制導致 有時候雖然已經收到消息通知,但是打開App需要 等待幾秒鐘的加載消息 ,甚至可能因此錯過壹些重要的微信電話。
理論上 通過打開“後臺 App 刷新” 可以解決 先收到消息推送再加載顯示內容的問題,但是 實際的使用中 可能對微信這壹類社交軟件 不起作用 。
目前iPhone在消息推送方面主要存在著兩個問題,其中壹個就是 消息推送延遲 ,主要影響因素有 消息通知設置 、網絡延遲以及 服務器穩定性 。
目前針對蘋果的推送服務,蘋果提供了及時提醒, 延遲提醒 (通知摘要)以及不提醒的方式。而如果選擇了 定時摘要 的就會出現消息推送延遲的問題。
網絡延遲 這壹因素應該 不難理解 ,而服務器穩定性這壹因素其實在這些年已經 有所好轉 。像前些年我們可能時不時就看到App Store 加載失敗 ,iCloud無法同步等問題,這可能就是跟早期蘋果在國內的服務器(雲上貴州)不穩定有關。
消息推送延遲的解決辦法。進入“設置>通知”,將推送消息可能存在延遲的 通知全部關閉 , 手機重啟 後找到通知設置,把剛才關閉的 重新打開 。
針對另壹個可能會遇到的消息 加載時間較長 的問題,都有相對應的影響因素,比如網絡速度、手機性能以及 App的後臺是否被關閉 。
加載時間壹定程度上取決於當前 手機的性能 、 可用運行內存 、以及磁盤加載速度。
但這更重要的其實是 避免退出常用軟件的後臺 。 頻繁關閉手機後臺不會影響手機本身的消息推送,但是收到新消息後打開該應用還 需要時間加載 。因此 最明顯有效的方法,就是針對性地關掉軟件的後臺。