FCM设置推送消息的时效性(若目标设备没有在限定时间内收到推送则放弃推送)

前言

项目里进行谷歌推送的时候,希望能再加入一个功能,如果用户没有在一定的时间内收到推送,则取消这条推送,改为推送另一条消息(XX未收到)。

研究思路

第一步:提取要素

这个功能的期望特征是什么?
从测试反馈的情况来看,某设备本需要在若干时间后收到某个推送,但是没有收到,然后过一段时间才收到。而超时后,就可能导致推送失效,比如通话请求推送。
关键在于:通知的时效性
如果这个通知不能在某段时间内收到就使其无效改为推送其他消息
既然如此逻辑上就要考虑一个节点,怎么知道通知没能在某段时间内收到呢。

第二步:场景分析

在实际使用过程中有什么期望?
我期望,服务器知道通知超时,并且根据超时的时间进行处理
关键在于:可控的时效性参数
通过对于FCM官方sdk的研究我找到了合适的方案
官网链接:https://firebase.google.com/docs/cloud-messaging/concept-options
原文如下:

  • FCM 通常会在消息发出之后马上进行传递。 但是,也有一些例外情况。例如,如果在 Android 平台上,设备有可能处于关闭、离线或不可用状态。 FCM 可能会有意延迟消息传递,以防止应用消耗过多资源和对电池续航时间产生不良影响。

  • 在这种情况下,FCM 会存储消息,等到可行时立即发送。尽管大多数情况下这样做都没什么问题,但有些应用可能永远不会传递延迟消息。举例来说,如果消息是来电或视频聊天通知,则它仅在通话终止之前的这段较短时间内有意义。或者,如果消息是活动邀请,那么如果在活动结束后才收到消息,它将毫无用处。

  • 在 Android 和 Web/JavaScript 上,您可以指定消息的最长有效期。此值必须是介于 0 至 2419200 秒(28 天)之间的一段持续时间,其对应于 FCM 存储并尝试传递消息的最长时间期限。不含此字段的请求默认为最长期限(四周)。
    官网案例:

{
   
  "message":{
   
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
   
      "Nick" : "Mario",
      "body" : "great match!",
      <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值