推送簡(jiǎn)介
目前Android的推送平臺(tái)有三種類型惊窖。
1刽宪、專業(yè)第三方推送:個(gè)推(收費(fèi)服務(wù)比較好)、友盟(免費(fèi))界酒、極光
2圣拄、手機(jī)廠商推送:小米、華為毁欣、魅族
3庇谆、BAT大廠的推送:百度云推送、騰訊信鴿推送凭疮、阿里云移動(dòng)推送饭耳。
上述三種平臺(tái)各有優(yōu)勢(shì),手機(jī)廠商的推送在自己手機(jī)上屬于系統(tǒng)級(jí)服務(wù)执解,理論上推送限制小消息到達(dá)率低寞肖;專業(yè)的第三方推送平臺(tái)長(zhǎng)時(shí)間精細(xì)耕耘,接入相對(duì)簡(jiǎn)單衰腌,且有“看護(hù)功能”新蟆;BAT大廠的推送,目前集成過(guò)百度云右蕊,相對(duì)到達(dá)率不如專業(yè)的第三方推送琼稻,且大廠的應(yīng)用較多在手機(jī)出廠的白名單,普通app情況不能相比饶囚。普通app一般考慮第三方推送+手機(jī)廠商推送共用來(lái)提供
友盟的優(yōu)點(diǎn)
最終選擇友盟推送的原因帕翻,參考官網(wǎng) https://www.umeng.com/push:
1、多平臺(tái)一鍵下發(fā)萝风,聚合廠商通道嘀掸。目前已覆蓋華為、小米规惰、魅族横殴,支持系統(tǒng)級(jí)下發(fā)通道,提高消息到達(dá)率卿拴。同時(shí)避免app自己集成多廠商sdk的繁瑣
2衫仑、消息無(wú)痕撤回、個(gè)性化推送方案堕花。
3文狱、目前友盟官網(wǎng)貼出的客戶較多,不乏淘寶缘挽、迅雷瞄崇、頭條等app呻粹,這樣可最大程度借用“看護(hù)功能”。且友盟推送是免費(fèi)的
友盟的缺點(diǎn):
1苏研、官方不提供開發(fā)者技術(shù)群和論壇等浊,只能通過(guò)在線客服和電話客服溝通問(wèn)題,不能與開發(fā)人員對(duì)接摹蘑,導(dǎo)致溝通效率低
2筹燕、友盟目前與阿里合作,導(dǎo)致部分技術(shù)依賴淘寶衅鹿。但公司內(nèi)網(wǎng)大概率封禁淘寶撒踪,這對(duì)device_token的獲取,在線狀態(tài)的判斷都會(huì)造成影響大渤。
3制妄、生產(chǎn)模式的發(fā)送存在限制,測(cè)試環(huán)境無(wú)任何限制泵三。名次定義及限制具體參考https://developer.umeng.com/docs/66632/detail/68343?spm=a311a.9588098.0.0:
- 廣播(broadcast)默認(rèn)每天可推送10次
- 組播(groupcast)默認(rèn)每分鐘可推送5次
- 文件播(filecast)默認(rèn)每小時(shí)可推送300次
- 自定義播(customizedcast, 且file_id不為空)默認(rèn)每小時(shí)可推送300次
- 單播類消息暫無(wú)推送限制
推送類型:?jiǎn)尾?unicast)耕捞、列播(listcast)、自定義播(customizedcast且不帶file_id)統(tǒng)稱為單播類消息烫幕,Web后臺(tái)不會(huì)展示此類消息詳細(xì)信息俺抽,僅展示前一天的匯總數(shù)據(jù);
廣播(broadcast)纬霞、文件播(filecast)、組播(groupcast)驱显、自定義播(customizedcast且file_id不為空)統(tǒng)稱為任務(wù)類消息诗芜,任務(wù)類消息支持API查詢、撤銷操作埃疫,Web后臺(tái)會(huì)展示任務(wù)類消息詳細(xì)信息伏恐。
其中,列播要求不超過(guò)500個(gè)device_token栓霜,該推送類型預(yù)計(jì)是我們后端會(huì)采用的類型翠桦。自定義播通過(guò)alias也可以做一些研討。
目前開放的組播篩選字段有胳蛮,支持邏輯上的and(與), or(或), not(非)操作, 以及這些操作的組合:
- “app_version”(應(yīng)用版本)
- “channel”(渠道)
- “device_model”(設(shè)備型號(hào))
- “province”(省)
- “tag”(用戶標(biāo)簽)
- “country”(國(guó)家和地區(qū)) //“country”和”province”的類型定義請(qǐng)參照 附錄J
- “l(fā)anguage”(語(yǔ)言)
- “l(fā)aunch_from”(一段時(shí)間內(nèi)活躍)
- “not_launch_from”(一段時(shí)間內(nèi)不活躍)
推送相關(guān)的一些參考文檔:
Android端外推送到底有多煩销凑?
陳漠沙:如何正確理解推送服務(wù)的“送達(dá)率”
友盟推送集成小米華為魅族通道
微軟設(shè)計(jì)師干貨分享:3大App消息推送模式及適用場(chǎng)景
集成要點(diǎn)
1、目前友盟的推送分為3種類型:通知(通知欄消息)仅炊、應(yīng)用內(nèi)消息(廣告業(yè)斗幼,頁(yè)內(nèi)彈窗等)、自定義消息(透?jìng)飨ⅲ└ⅰD壳拔覀儨?zhǔn)備采用的是通知類型推送蜕窿。
通知類型的推送消息送達(dá)率>自定義消息類型谋逻。可參考小米push的解釋https://dev.mi.com/console/doc/detail?pId=1292#_1_5中章節(jié)6透?jìng)骱屯ㄖ愊⒌膮^(qū)別
2桐经、device_token失效的情況: token通常情況下不會(huì)失效毁兆,但如果是備卸載過(guò),又重新安裝阴挣,token可能會(huì)變化气堕; 另一種是設(shè)備沒有SD卡,設(shè)備id變化導(dǎo)致的device token變化
3屯吊、不能監(jiān)控應(yīng)用卸載的情況送巡。用戶卸載后,會(huì)影響消息送達(dá)率盒卸。也可參考上述小米push的解釋骗爆。
4、UmengNotifyClickActivity”使用通道彈窗功能”蔽介,小米/魅族/華為的廠商通道需要實(shí)現(xiàn)該類的子類摘投,可以共用一個(gè)類,該類用來(lái)指定點(diǎn)擊彈窗后下一步的跳轉(zhuǎn)動(dòng)作虹蓄。
5犀呼、關(guān)于別名的使用。多個(gè)設(shè)備可設(shè)置同一個(gè)別名薇组,具體參考文檔 https://developer.umeng.com/docs/66632/detail/89996
6外臂、關(guān)于離線推送,目前只支持小米 華為 魅族律胀,其他不支持宋光。客服聲稱小米等系統(tǒng)通道和集成官方sdk表現(xiàn)沒有區(qū)別炭菌。自己測(cè)試小米手機(jī)殺掉應(yīng)用后罪佳,系統(tǒng)通道下發(fā)消息能收到,但是普通消息不能收到
剩余工作:目前僅集成了小米的廠商通道測(cè)試黑低,未進(jìn)行華為的測(cè)試赘艳。
遇到注冊(cè)失敗:E/com.example.push.umeng.tfzzpushdemo.MyApplication: 注冊(cè)失斂宋铡:--------> s:-11,s1:accs bindapp error! —— 出現(xiàn)頻率有點(diǎn)高
參考官網(wǎng)device_token離線的FAQhttps://developer.umeng.com/docs/66632/detail/67141蕾管,猜測(cè)和網(wǎng)絡(luò)環(huán)境有關(guān)。公司內(nèi)網(wǎng)目前是不能訪問(wèn)淘寶的菩暗,根據(jù)自己的測(cè)試娇掏,第一次安裝時(shí),wifi內(nèi)網(wǎng)出現(xiàn)上方的注冊(cè)失斞小婴梧;但是切換到4g網(wǎng)絡(luò)則立即注冊(cè)成功下梢。后續(xù)再切換到wifi內(nèi)網(wǎng),則利用緩存注冊(cè)成功(斷網(wǎng)啟動(dòng)塞蹭,也會(huì)注冊(cè)成功)孽江。此時(shí)官方管理平臺(tái)提供的device_token在線狀態(tài)查詢返回的在線狀態(tài)是離線。緩存有失效時(shí)間番电,因測(cè)試中發(fā)現(xiàn)上午注冊(cè)正常岗屏,下午出現(xiàn)錯(cuò)誤。
該問(wèn)題有一定的影響范圍漱办,第一次安裝或緩存失效后存在概率注冊(cè)失敗这刷,這個(gè)時(shí)候只能用后臺(tái)緩存的device_token發(fā)信息。如果token沒有變化娩井,設(shè)備還是能收到信息的暇屋。
目前該問(wèn)題已反饋給官方,等待官方給的確切答復(fù)洞辣。
名詞解釋
宿主指的是掛載長(zhǎng)連接的App咐刨。在一臺(tái)設(shè)備上,肯定會(huì)有超過(guò)一款的App集成了U-Push SDK扬霜。U-Push采用的是“多路復(fù)用技術(shù)”定鸟,不會(huì)每個(gè)App都起一個(gè)長(zhǎng)連接,U-Push SDK只會(huì)建立一個(gè)后臺(tái)的長(zhǎng)連Service著瓶,長(zhǎng)連通道會(huì)掛到其中的一個(gè)App上联予,那么掛載長(zhǎng)連接的App就是“宿主App”。U-Push SDK有一套高級(jí)的選舉算法材原,保證宿主的選舉是公平的沸久,比如說(shuō)今天App-A被選為宿主了,那么第二天就會(huì)把App-A降級(jí)华糖,讓其它的App變成宿主麦向,盡可能的保證宿主的選舉是公平的瘟裸,不會(huì)出現(xiàn)某一個(gè)特定的App被經(jīng)常選為宿主