推送——Android程序員‘一輩子的痛’!!

項目中有個比較迷你的聊天功能,能夠發語音和圖片。android

以上是背景。程序員

項目是15年立項的,當時的Android環境和如今有很大不一樣。 代碼的是用MQTT+Service實現的。自己這些技術沒有啥難點,可是這些技術在18年就顯得有些不適應了。bash

個人建議:若是項目中有推送需求的話,直接上第三方推送服務,不要嘗試本身搞了,自己推送沒啥問題,可是主要的問題是進程保活。服務器

客戶反饋在華爲手機上常常收不到消息通知。經過咱們測試,的確收不了。 我發現咱們的程序被殺死了。因而咱們建議客戶把咱們的程序加入白名單。可是這種狀況仍是不行,在後臺最多堅持5分鐘,最終仍是收不到消息。程序信息頁面顯示程序還在運行,可是就是收不到消息……感受相似程序被「凍結」了。由於再次進入程序的時候,會立馬恢復。微信

因而反饋客戶,說這是安卓系統限制。可是客戶那邊祭出殺手鐗:「爲啥微信就能收到!」測試

我竟無言以對!spa

Leader也堅持要解決這個問題,因而我在應用保活上作一番掙扎!code

我作了一下嘗試: 播放靜音音頻,常駐通知欄,一像素Activity,息屏後把程序調到前臺……進程

最終的結論是隻有「息屏後把程序調到前臺」這個有點做用,華爲手機上會顯示高費電應用的提示。可是也就堅持了不到一個小時,就會被「凍結」。圖片

最終——放棄!

咱們選擇了使用第三方推送服務,首先考慮的是手機廠商渠道。像是小米,華爲,魅族的推送都是走系統通道的。

測試結果是程序被殺死也能收到推送。在當前國內的Android手機環境,App在後臺根本不能‘獨活’。除非你是微信QQ這樣的,或者拉幫結夥使用極光個推這種能夠相互拉活的,或者找大哥照着,接入官方推送渠道。

最後,期待統一推送聯盟早日上線,拯救咱們芸芸安卓程序員。

對了,我使用的是騰訊信鴿,在早8點晚7點左右消息延遲很大(超過半小時),甚至有丟消息的狀況,其餘時間接收正常。給他們的技術發郵件2天了都沒回,打算換別家了。

騰訊信鴿是有小米華爲魅族的通道的,因此我最早嘗試的是信鴿。目前信鴿和個推比較,信鴿的效果仍是比較好的,加了白名單在華爲手機上也就堅持個3-5分鐘,而後就收不到了。若是信鴿的服務器出現瓶頸,咱們本身服務器就會嘗試經過廠商通道再推送。信鴿能夠一次性接入小米華爲魅族的通道,比較方便。

剛纔看一下魅族推送,魅族推送支持小米和華爲通道,可是魅族的實名認證好麻煩,不像華爲,支付寶受權一下就能夠了。因此等實名認證過了,再試一下魅族推送。

在魅族推送的說明文檔中看到了一下內容:

二 統一推送配置
    AndroidManifest 配置
     <!-- 統一推送配置 -->
     <receiver android:name=".UpsReceiver">
     <intent-filter>
     <!-- 接收 push 消息 -->
     <action android:name="com.meizu.ups.push.intent.MESSAGE"
    />
     </intent-filter>
     </receiver>
複製代碼

難道是傳說中的‘統一推送’?

忽然有點小激動!!!

相關文章
相關標籤/搜索