由于做了一款海外的 APP,推送选用了 Google 自己的推送服务 GCM,它的原理与 Apple 推送通知服务类似,消息从应用服务器被发送到统一服务器,然后再发送到设备,这样应用就无需常驻后台,因此资源占用便能很好地得到控制,有利于系统的流畅和续航。
经过研究,选用了 FCM。是 2014 年 Google 收购 Firebase 后,将 GCM 改名为「 Firebase 云消息传递( Firebase Cloud Messaging,即 FCM ) 」,它继承了 GCM 的核心基础架构,并带有新的 SDK,简化了云消息传递的开发工作。
项目使用 Flutter 开发,顺利接入后,苹果端 APP 应用退到后台或是杀掉 APP 都能收到通知,但是, Android 端 APP,只有退到后台运行能收到通知,APP 如果被 Killed 就收不到通知。不是统一推送,不需要 APP 后台常驻吗?这样的推送跟国内的极光推送之类的有什么区别呢,需要后台一直运行推送服务才能收到?
目前问题分析,Android 测试手机是三星 S7 和华为 mate 9,测试时,一定要 Google Servicel 开启才能使用 FCM,所以排除是国内定制系统对 Google service 有一定限制问题,人在中国用的中国版手机,真不知道国外推送什么情况,目前下载了 Twitter 测试下,貌似不打开 APP 后台运行,也收不到推送。
请大家对推送问题讨论下 google 推送或者 firebase 推送情况吧。
1
tenpage 2019-10-24 12:31:06 +08:00
遇到了同样的问题,这样看来 FCM 也没什么优势。清理任务列表的时候,国外手机不会“强制停止”,国内手机大多会”强制停止“,所谓的深度清理。
|
2
delpo 2019-10-27 15:22:08 +08:00 1
因为按照安卓系统的逻辑,如果一个 app 被"force stop",那么就不应该被任何行为唤醒,那么自然也就不应该收到通知.
事实上大部份国外应用,按 home 键或者划掉,都不会后台常驻,而是留下缓存进程,这样就能收到 fcm 通知. 所以归根结底还是国内环境给你的错觉. |
3
mtt2011pony OP @delpo soga 感谢感谢
|
4
mtt2011pony OP @tenpage 就是 FCM 在国内没有优势 感谢 了解了解
|
5
yyyymmmmxxxx 2019-10-30 14:15:02 +08:00
@mtt2011pony 我也是做一款海外的 APP,集成的 FCM,不过在国内华为手机上 kill 到进程收不到通知,不知道在国外会怎么样
|
6
mtt2011pony OP @yyyymmmmxxxx 你是华为哪款手机,我测试过国内华为 mate 9、三星 S7 能收到,不确定国外具体怎么样,感觉国外 google 服务应该是更开放的。
|
7
mtt2011pony OP @yyyymmmmxxxx sorry 没看清楚,kill 掉进程收不到 ,退到后台运行能收到😂
|
9
coderljx 2020-05-22 14:25:35 +08:00
我也遇到了和楼主同样的问题。
我维护一款针对新加坡用户的 app,有个业务是需要每天固定有 5 个时间段提醒用户,类似于闹钟(但是每天时间不一样)。 选取的是 onesignal 第三方平台,经常收到用户说无法收到推送的问题,很恼火😫 |