國(guó)內(nèi)應(yīng)用很少用到國(guó)外的推送,在網(wǎng)上的資料也比較少,在公司集成Firebase的時(shí)候遇到很多坑,目前來(lái)說遇到的最大的坑就是Firebase的消息推送。這個(gè)問題卡了我大半天,謹(jǐn)以此記錄一下。
準(zhǔn)備條件
1.將Firebase添加至Android項(xiàng)目,具體細(xì)節(jié)請(qǐng)?jiān)敿?xì)查看這位大神的文章。注意:google-services.json不要弄錯(cuò)
2.在獲取到token令牌后,上傳服務(wù)器成功(自備梯子)。
遇坑情況
在firebase后臺(tái)推送的時(shí)候,不管App是處于前臺(tái)還是后臺(tái)的時(shí)候都能收到消息,但是將App應(yīng)用殺死后,卻始終收不到推送消息(需求是要不管App是否存活,都要收到消息),在網(wǎng)上百度了很久后才發(fā)現(xiàn)解決的辦法有兩種。
解決辦法
1.服務(wù)端的json數(shù)據(jù)文件里面不要少了"icon:"這個(gè)字段
{
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"notification" : {
"body" : "great match!",
"title" : "Portugal vs. Denmark",
"icon" : "myicon" //一定不能缺少這個(gè)字段
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
2.如果以上所有的條件都滿足,殺死App后還是收不到推送消息,這時(shí)候就要考慮手機(jī)的問題了,首先要去App應(yīng)用管理里面,打開通知欄權(quán)限,然后看是否有“自啟動(dòng)”這個(gè)開關(guān),如果有就將它打開,然后重新運(yùn)行App,再推送。這些都嘗試之后,還是不行,就重啟手機(jī)或者換一臺(tái)手機(jī)測(cè)試,絕對(duì)可行??!
3.最好使用國(guó)外的真機(jī)測(cè)試(ps:港版的手機(jī)也行)。首先測(cè)試一下Facebook應(yīng)用在后臺(tái)被干掉的情形下是否能收到好友消息,如果不能收到即可排除是手機(jī)自身的問題(原因很多,不一一贅述);如果某款手機(jī)的Facebook能在后臺(tái)被干掉的情形下收到好友的消息,即這款手機(jī)是符合google三件套系列的原生手機(jī),一般這種情況下,測(cè)試自己的應(yīng)用也能在被干掉的情形下收到firebase后臺(tái)推送的測(cè)試消息,如果這時(shí)候還收不到說明自己集成的代碼有問題,得好好自查一下了。
參考文章:
國(guó)外的Android系統(tǒng)“即使App不在后臺(tái)運(yùn)行,也能獲得推送”的簡(jiǎn)單分析