V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mtt2011pony
V2EX  ›  问与答

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

  •  
  •   mtt2011pony · 2019-09-27 14:13:27 +08:00 · 10405 次点击
    这是一个创建于 1919 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2020-05-22 14:25:35 +08:00
    tenpage
        1
    tenpage  
       2019-10-24 12:31:06 +08:00
    遇到了同样的问题,这样看来 FCM 也没什么优势。清理任务列表的时候,国外手机不会“强制停止”,国内手机大多会”强制停止“,所谓的深度清理。
    delpo
        2
    delpo  
       2019-10-27 15:22:08 +08:00   ❤️ 1
    因为按照安卓系统的逻辑,如果一个 app 被"force stop",那么就不应该被任何行为唤醒,那么自然也就不应该收到通知.
    事实上大部份国外应用,按 home 键或者划掉,都不会后台常驻,而是留下缓存进程,这样就能收到 fcm 通知.
    所以归根结底还是国内环境给你的错觉.
    mtt2011pony
        3
    mtt2011pony  
    OP
       2019-10-28 13:24:27 +08:00
    @delpo soga 感谢感谢
    mtt2011pony
        4
    mtt2011pony  
    OP
       2019-10-28 13:26:39 +08:00
    @tenpage 就是 FCM 在国内没有优势 感谢 了解了解
    yyyymmmmxxxx
        5
    yyyymmmmxxxx  
       2019-10-30 14:15:02 +08:00
    @mtt2011pony 我也是做一款海外的 APP,集成的 FCM,不过在国内华为手机上 kill 到进程收不到通知,不知道在国外会怎么样
    mtt2011pony
        6
    mtt2011pony  
    OP
       2019-10-30 22:59:43 +08:00
    @yyyymmmmxxxx 你是华为哪款手机,我测试过国内华为 mate 9、三星 S7 能收到,不确定国外具体怎么样,感觉国外 google 服务应该是更开放的。
    mtt2011pony
        7
    mtt2011pony  
    OP
       2019-10-30 23:01:39 +08:00
    @yyyymmmmxxxx sorry 没看清楚,kill 掉进程收不到 ,退到后台运行能收到😂
    bclerdx
        8
    bclerdx  
       2020-04-28 16:08:50 +08:00 via Android
    @delpo 那么后台常驻和缓存进程有什么区别么?
    coderljx
        9
    coderljx  
       2020-05-22 14:25:35 +08:00
    我也遇到了和楼主同样的问题。
    我维护一款针对新加坡用户的 app,有个业务是需要每天固定有 5 个时间段提醒用户,类似于闹钟(但是每天时间不一样)。
    选取的是 onesignal 第三方平台,经常收到用户说无法收到推送的问题,很恼火😫
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2746 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:37 · PVG 22:37 · LAX 06:37 · JFK 09:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.