如何通过FCM在APNS JSON输出中实现time-sensitive标记?
结论
二者完全不等价,属于两个独立的配置维度,不存在官方定义的对应关系,不能通过设置FCM high priority实现time-sensitive通知效果。
两者的核心差异
FCM消息优先级是投递链路层面的配置
仅作用于FCM服务端到用户设备的消息下发阶段:- 设为
high时,FCM会尝试立即唤醒设备投递消息,即使设备处于低功耗Doze模式也会优先建立链路推送,允许消息触发后台唤醒执行推送扩展逻辑 - 设为
normal时,消息会被合并批量延迟投递,不会主动唤醒低功耗设备,用于降低设备功耗
该配置不会对iOS系统收到消息后的通知展示规则产生任何影响。
- 设为
interruption-level是iOS系统展示层面的配置
仅在消息已经成功投递到设备、系统准备弹出通知时生效,和消息投递链路的优先级没有关联:time-sensitive是iOS通知中断级别的最高档位之一,可以突破专注模式、静音开关的屏蔽,强制亮屏、播放提示音,还会在通知中心置顶1小时,该能力需要用户主动为App开启「时效性通知」权限才能生效- 该字段属于APNs payload的标准配置项,和FCM的消息优先级完全独立。
FCM发送time-sensitive通知的实现方式
调用FCM HTTP v1接口发消息时,在apns配置块下的aps节点中添加对应字段即可,示例payload结构:
{ "message": { "token": "目标设备注册的FCM推送token", "notification": { "title": "通知标题", "body": "通知内容" }, "apns": { "headers": { "apns-priority": "10" }, "payload": { "aps": { "interruption-level": "time-sensitive" } } } } }
注意:如果用户未给App开启时效性通知权限,即使payload携带了
time-sensitive配置,系统也会自动降级为默认通知级别,无法突破专注模式限制。
内容的提问来源于stack exchange,提问作者Johannes Gehrs
相关产品推荐
相关产品推荐

