專案中有個比較迷你的聊天功能,可以發語音和圖片。
以上是背景。
專案是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>
複製程式碼
難道是傳說中的‘統一推送’?
突然有點小激動!!!