沒有干貨,只有濕貨
不講技術(shù),只是一個程序員的吐槽,僅此而已。。
突然冒出了n多消息推送平臺。
記得2年前,Android消息推送,就像雨后的春筍一樣,冒出來了很多,主要以友盟,極光為代表,再然后BAT也陸續(xù)推出了自己的消息推送平臺,可以說,這么多的消息推送平臺,讓咱們挑花了眼,各有各的優(yōu)點,我也在當(dāng)時問了下周圍的朋友,用什么平臺的都有。各大消息推送平臺, 都想在這里分得一杯羹,就像當(dāng)初的云盤一樣,再看看現(xiàn)在的消息推送平臺,要死不活的平臺一堆。
殺不死的推送小強。
現(xiàn)在推送,基本上就是后臺和服務(wù)器,保持一個長連接,如果后臺有新的消息,需要推送到用戶的手機上,只需通過這個長連接,就可以直接推送,這個長連接維持,在Android里面,咱們靠的是Service組件,所以說,這個Service起著至關(guān)重要的作用,如果我們要保證消息能夠及時的推送到用戶手機上,就必須保證這個Service的運行,為了Service的運行,咱們把能監(jiān)聽的系統(tǒng)廣播(網(wǎng)絡(luò)連接狀態(tài)廣播,開關(guān)屏廣播,開機廣播等),都給監(jiān)聽了,為的就是提高Service的存活率,說實話,這些廣播足以維持Service的存活。
手機廠商祭出了屠龍刀!!
這樣殺不死的推送小強,存在了好長一段時間,用戶只要多開幾個app,手機就開始發(fā)熱,卡頓,于是各種衛(wèi)士管家啥的都出來了,說是提供一鍵清理的功能,雖然當(dāng)時似乎有那么點效果,但是過不了多久,手機又開始卡,發(fā)熱,耗電等等一系列問題接踵而至,當(dāng)然用戶發(fā)現(xiàn)這種問題,第一個責(zé)怪的就是手機廠商,廠商成為了無辜的背鍋俠,于是怒了,終于祭出了屠龍刀,手機提供一個系統(tǒng)級別的一鍵清理,只要不是白名單的程序,一律干掉,各大app尸首遍地,慘目忍睹。
道高一尺魔高一丈!!
當(dāng)然咱們程序員也不是吃素的,于是推出了各種保活策略,例如:多進(jìn)程守護(hù),native層直接fork一個進(jìn)程等等所謂的黑科技,有的效果還不錯,在部分的國內(nèi)廠商的手機上,還真有效果,不過現(xiàn)在看看,所謂的保活黑科技還真的有效嗎?據(jù)我現(xiàn)在的測試,目前在小米,華為,魅族手機上,所謂的黑科技都已經(jīng)失效了,咱們程序員和廠商的斗智斗勇,最后還是以廠商的勝利告終,道可道,非常道!
哥倆好,手拉手往前走。。
記得一次,產(chǎn)品經(jīng)理說:“為啥人家微信QQ,怎么都能收到推送消息,咱們的就不可以!”,當(dāng)時心里成千上萬的草泥馬在奔騰,你說咱們程序員咋就這么苦逼,不就一個消息推送嗎,搞得人要死要活的,誰叫咱們的Google大爹,不硬氣呢,凡是使用Android系統(tǒng)的必須集成Google服務(wù),那咱們豈不爽歪了,咱們android也可以像Apple一樣,那叫一個簡單,想想都覺得美,算了,別做夢了,咱們帝國還有一堵高墻。不過,曙光即將到來,那就是廠商為了解決這種相愛相殺的矛盾,終于出了自己的推送,而且還是系統(tǒng)級別的,記得小米推送出來的時候高興了半天,終于不用擔(dān)心小米的一鍵清理了,隨后各大廠商的推送陸續(xù)的出來了,像是華為,魅族都有自己的推送。
到底有沒有好的推送解決方案呢?
說實話,這個問題困擾了我很久,不能等著產(chǎn)品罵你不行,而你又無動于衷,于是開始查找一些關(guān)于消息推送的解決方案,當(dāng)時也發(fā)現(xiàn)了一個解決方案,那就是阿里云推,它可以提供一個輔助推送通道,不過仔細(xì)看了下文檔,還是發(fā)現(xiàn)存在一些問題的。
看到阿里的這個說明,咱得先明白兩個詞“通知”和“透傳”,由于阿里的輔助通道使用的透傳,而透傳在app被一鍵清理掉,那就收不到透傳,但是通知,小米和華為卻是以系統(tǒng)服務(wù)維持的,就算app被清理掉,手機還是能接收到通知的,所以說,阿里的這個輔助通道,也不能完全保證消息的送達(dá)。既然通知是系統(tǒng)級維護(hù)的,那么根據(jù)不同的手機型號,集成不同的消息推送,通過廠商平臺,發(fā)送通知,這不就可以大大提高消息推送達(dá)率的,于是就誕生了OnePush。
優(yōu)勢對比
OnePush | 非廠商推送 | 廠商推送 | 輔助通道推送 | |
---|---|---|---|---|
存活率 | 高 | 低 | 高 | 低 |
送達(dá)率 | 廠商高,其他根據(jù)當(dāng)前系統(tǒng) | 中 | 手機區(qū)分 | 中 |
拓展性 | 強 | 低 | 低 | 低 |
目前OnePush,提供了小米和華為的推送拓展,你可以自由拓展其他的消息推送平臺,當(dāng)然你也不用拓展其他的消息推送,完全使用小米和華為的拓展也是可以的,華為平臺使用華為推送,其他平臺使用小米推送,小米推送完全可以替代其他的非廠商推送,為啥呢,因為小米推送,不僅支持小米手機,還支持其他手機,當(dāng)然在其他手機上不是系統(tǒng)級別的服務(wù)而已。
推廣一下OnePush
附上OnePus開源地址: https://github.com/pengyuantao/OnePush
喜歡就star下,說不定能用著,吐槽完了,這么多文字,能看到最后,你很有前途!