推送——Android程式設計師‘一生的痛’!!

我是綠色大米呀發表於2018-04-18

專案中有個比較迷你的聊天功能,可以發語音和圖片。

以上是背景。

專案是15年立項的,當時的Android環境和現在有很大不同。 程式碼的是用MQTT+Service實現的。本身這些技術沒有啥難點,但是這些技術在18年就顯得有些不適應了。

我的建議:如果專案中有推送需求的話,直接上第三方推送服務,不要嘗試自己搞了,本身推送沒啥問題,但是主要的問題是程式保活。

客戶反饋在華為手機上經常收不到訊息通知。通過我們測試,的確收不了。 我發現我們的程式被殺死了。於是我們建議客戶把我們的程式加入白名單。但是這種情況還是不行,在後臺最多堅持5分鐘,最終還是收不到訊息。程式資訊頁面顯示程式還在執行,但是就是收不到訊息……感覺類似程式被“凍結”了。因為再次進入程式的時候,會立馬恢復。

於是反饋客戶,說這是安卓系統限制。但是客戶那邊祭出殺手鐗:“為啥微信就能收到!”

我竟無言以對!

Leader也堅持要解決這個問題,於是我在應用保活上做一番掙扎!

我做了一下嘗試: 播放靜音音訊,常駐通知欄,一畫素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>
複製程式碼

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

突然有點小激動!!!

相關文章