使用 FireBase 推送(FCM), Android 端 APP 杀死后不能收到推送通知。

2019-09-27 14:13:27 +08:00
 mtt2011pony

由于做了一款海外的 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 推送情况吧。

9880 次点击
所在节点    问与答
9 条回复
tenpage
2019-10-24 12:31:06 +08:00
遇到了同样的问题,这样看来 FCM 也没什么优势。清理任务列表的时候,国外手机不会“强制停止”,国内手机大多会”强制停止“,所谓的深度清理。
delpo
2019-10-27 15:22:08 +08:00
因为按照安卓系统的逻辑,如果一个 app 被"force stop",那么就不应该被任何行为唤醒,那么自然也就不应该收到通知.
事实上大部份国外应用,按 home 键或者划掉,都不会后台常驻,而是留下缓存进程,这样就能收到 fcm 通知.
所以归根结底还是国内环境给你的错觉.
mtt2011pony
2019-10-28 13:24:27 +08:00
@delpo soga 感谢感谢
mtt2011pony
2019-10-28 13:26:39 +08:00
@tenpage 就是 FCM 在国内没有优势 感谢 了解了解
yyyymmmmxxxx
2019-10-30 14:15:02 +08:00
@mtt2011pony 我也是做一款海外的 APP,集成的 FCM,不过在国内华为手机上 kill 到进程收不到通知,不知道在国外会怎么样
mtt2011pony
2019-10-30 22:59:43 +08:00
@yyyymmmmxxxx 你是华为哪款手机,我测试过国内华为 mate 9、三星 S7 能收到,不确定国外具体怎么样,感觉国外 google 服务应该是更开放的。
mtt2011pony
2019-10-30 23:01:39 +08:00
@yyyymmmmxxxx sorry 没看清楚,kill 掉进程收不到 ,退到后台运行能收到😂
bclerdx
2020-04-28 16:08:50 +08:00
@delpo 那么后台常驻和缓存进程有什么区别么?
coderljx
2020-05-22 14:25:35 +08:00
我也遇到了和楼主同样的问题。
我维护一款针对新加坡用户的 app,有个业务是需要每天固定有 5 个时间段提醒用户,类似于闹钟(但是每天时间不一样)。
选取的是 onesignal 第三方平台,经常收到用户说无法收到推送的问题,很恼火😫

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX