Android FCM 推送无法接收的原因 您所在的位置:网站首页 三星fcm推送 Android FCM 推送无法接收的原因

Android FCM 推送无法接收的原因

2023-07-24 21:50| 来源: 网络整理| 查看: 265

害怕文章以后找不到了,在此处备份一份

首先讲一下什么样的手机以及状态可以接收 FCM 推送, 以及不同的数据格式会走哪条通道

格式一 

{ "to": "cvRJ6BXFTQiyB9W5pqcx-E:APA91bE", "notification": { "title": "Pickup Offer!", "body": "Address detail", "click_action": "yourapp://pickup" } }

格式二 

{      "to":"dk_FO2LEdlI:APA0",    "data":{                "title":"Pickup Offer!",             "body":"Address detail",             "click_action":"yourapp://pickup",             "event":"PICKUP",             "address":"Address detail"    } }

格式三 

{      "to":"dk_FO2LEdlI:APA0",    "notification": {         "title":       "Pickup Offer!",         "body":        "Address detail",         "click_action": "yourapp://pickup"    },    "data":{                "title":"Pickup Offer!",             "body":"Address detail",             "click_action":"yourapp://pickup",             "event":"PICKUP",             "address":"Address detail"    } }

一. 国外原生系统:

无论手机和应用处于什么状态,大概率会收到推送, 因为 google 服务是原装的,随系统启动, 所以 Google Service 可以长期后台运行,并且在收到消息后会唤起应用注册的广播或服务,从而唤起应用。

但是不同的推送格式会走不同的通道,在应用运行状态下,百分百会走

FirebaseMessagingService

但是在应用被 Kill 后, 如果接收到格式一的推送, 系统会绕过你的应用直接创建推送,并通过 click_action 来实现点击跳转。

而如果接收到格式二,格式三的推送, 则会走你扩展 MyFirebaseMessagingService 重写的方法

二. 国内定制系统:

在翻墙的环境下,且应用运行状态下, 大概率会收到推送,但在应用被 Kill 后,某些手机版本可以收到格式一的推送。

而格式二三 的推送, 则无法送达的,因为FCM service 被干掉了。

三. 推送率

以上所述的可接收推送都是大概率,但千万别拍着胸脯向PM保证绝对没问题,因为还有很多其它因素导致无法接收,让我们列举一下:

1 网络堵塞,或FCM服务器堵塞, 早上发的消息, 晚上才到

2 应用被杀死时无法接受消息,因为广播或Service无法启动, 打开应用时,会疯狂推送离线消息, 是因为缓存机制,默认4个周的缓存,证据在此

3 优先级过低, 不予打扰用户,证据在此

4 电源管理导致,证据在此,安卓官方,三星官方, PushWoosh

总结 能不能收到推送,全看你的网络状况以及FCM服务有没有被干掉或禁止, 如果被干掉了, 还要看系统会不会处理显示格式一的推送。

有些手机真的邪乎, 就算是国外版的某些版本三星,也会在杀死App后,不再唤醒App所注册的推送广播或服务

原文链接



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有