国内应用很少用到国外的推送,在网上的资料也比较少,在公司集成Firebase的时候遇到很多坑,目前来说遇到的最大的坑就是Firebase的消息推送。这个问题卡了我大半天,谨以此记录一下。
准备条件
1.将Firebase添加至Android项目,具体细节请详细查看这位大神的文章。注意:google-services.json
不要弄错
2.在获取到token令牌后,上传服务器成功(自备梯子)。
遇坑情况
在firebase后台推送的时候,不管App是处于前台还是后台的时候都能收到消息,但是将App应用杀死后,却始终收不到推送消息(需求是要不管App是否存活,都要收到消息),在网上百度了很久后才发现解决的办法有两种。
解决办法
1.服务端的json数据文件里面不要少了"icon:"
这个字段
{
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"notification" : {
"body" : "great match!",
"title" : "Portugal vs. Denmark",
"icon" : "myicon" //一定不能缺少这个字段
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
2.如果以上所有的条件都满足,杀死App后还是收不到推送消息,这时候就要考虑手机的问题了,首先要去App应用管理里面,打开通知栏权限,然后看是否有“自启动”这个开关,如果有就将它打开,然后重新运行App,再推送。这些都尝试之后,还是不行,就重启手机或者换一台手机测试,绝对可行!!
3.最好使用国外的真机测试(ps:港版的手机也行)。首先测试一下Facebook应用在后台被干掉的情形下是否能收到好友消息,如果不能收到即可排除是手机自身的问题(原因很多,不一一赘述);如果某款手机的Facebook能在后台被干掉的情形下收到好友的消息,即这款手机是符合google三件套系列的原生手机,一般这种情况下,测试自己的应用也能在被干掉的情形下收到firebase后台推送的测试消息,如果这时候还收不到说明自己集成的代码有问题,得好好自查一下了。