? ToTalk是一款純移動端電話類產(chǎn)品蛙酪,主要面向海外和海內(nèi)外的商旅用戶进统。用于解決跨國之間一卡走天下的問題剿骨,能夠在全球任何一個地方實現(xiàn)接聽和撥打沒并且沒有漫游費铸屉。
? 由于客戶端保活的問題岖妄,大部分開發(fā)者都有所了解型将,Android這部分為了省電,應用系統(tǒng)在后臺的時候會收不到系統(tǒng)消息荐虐。
? 我們在實現(xiàn)這些功能的時候七兜,為了能夠大部分的將消息能夠推送到客戶端,就需要做很多工作福扬,因此我們團隊在設(shè)計的時候腕铸,盡可能使用不同手機廠商自己的推送服務(wù)惜犀。
? 其中主要包括小米,華為和Google以及蘋果的推送狠裹。國內(nèi)廠商目前只有華為和小米虽界,國外三星手機目前沒有自己的推送,Android方面在國內(nèi)網(wǎng)絡(luò)測試推送的數(shù)據(jù)涛菠,總結(jié)是小米的推送到達率會比華為的高很多莉御。
? 小米手機在提供到達率的基礎(chǔ)上需要手機進行設(shè)置一些操作,比如小米的“神隱模式”碗暗,以及“自啟動”等相關(guān)操作颈将。而華為的部分手機會在息屏的情況斷網(wǎng)。當因此在推送上就需要開發(fā)者對不同手機進行一定的了解言疗。
? 由于ios的手機是最好解決的晴圾,主要采用蘋果自身的推送方式,到達率也很高噪奄,目前測試下來幾乎沒有不到達的死姚。
? 但是Android方面在推送的時候就需要我們有一定的策略,比如華為手機采用華為推送勤篮,小米手機采用小米推送都毒,而除了華為和小米手機之外則只能采用華為或者小米和Google推送,而Google推送則需要要求手機能支持谷歌服務(wù)才可用(這是中國的偉大的墻導致的)碰缔。
? 那么小米和華為自身的推送方式我們是比較容易實現(xiàn)的账劲,那么對于除了這些手機之外的呢?
? ? ToTalk的實現(xiàn)主要根據(jù)判斷國內(nèi)還是海外進行實現(xiàn)金抡,因為ToTalk主要面向全球用戶瀑焦,而大部分海外用戶手機都是能夠支持谷歌服務(wù)的。
? 對于海外的推送小米手機自身有一定的支持梗肝,但是不知道為何最近小米推送的服務(wù)榛瓮,海外有問題,也聯(lián)系過他們的支持巫击,他們也說確實是存在一定的問題禀晓,導致海外用戶用小米推送是到達不了的。
? 因此判斷是海外Ip則選擇Google推送坝锰,國內(nèi)Ip則看手機是小米則使用小米推送粹懒,華為使用華為推送,其他使用小米推送顷级。
? 服務(wù)器設(shè)計方面崎淳,要保存客戶端最近一次的終端信息,以及所支持的推送方式和不同推送服務(wù)的賬戶信息愕把。當要選擇推送消息到客戶端的時候拣凹,服務(wù)器可以查找到當前客戶端的推送方式和推送的賬戶信息,然后選擇相應的推送服務(wù)即可恨豁。
? 但是由于國內(nèi)網(wǎng)絡(luò)不能到達Google服務(wù)嚣镜,則推送Google的服務(wù)器需要使用海外節(jié)點,也就是需要推送服務(wù)在海外部署節(jié)點橘蜜,由海外節(jié)點使用Google推送服務(wù)接口即可菊匿。
? 其實在實現(xiàn)客戶端的消息推送上并不是特別復雜,主要是我們要熟悉不同手機操作系統(tǒng)的限制的使用方式计福。