You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyFCM实现延迟1小时推送通知的方法咨询

用PyFCM实现延迟1小时推送通知的解决方案

刚好我之前也研究过PyFCM的定时推送问题,其实它本身没有直接的延迟推送开关,但可以借助Firebase Cloud Messaging(FCM)的**预定消息(Scheduled Messages)**功能来实现,具体步骤和代码示例如下:

核心思路

PyFCM封装了FCM的预定消息能力,我们只需要通过指定schedule_time参数,设置好推送的具体时间(当前时间+1小时),就能让通知在指定时间点推送给目标设备。

具体步骤

1. 确保PyFCM版本为最新

旧版本的PyFCM可能没有schedule_time参数,先执行升级命令更新到最新版:

pip install --upgrade pyfcm

2. 计算预定推送时间

FCM使用UTC时区处理时间,所以我们需要生成UTC时区下1小时后的时间,避免时区偏差导致推送时间不准。

3. 调用推送方法并传入schedule_time

不管是单设备推送还是多设备推送,都可以在对应的方法中传入该参数触发定时推送。

完整代码示例

from pyfcm import FCMNotification
from datetime import datetime, timedelta, timezone

# 初始化FCM服务,替换成你的API密钥
push_service = FCMNotification(api_key="YOUR_FCM_SERVER_KEY")

# 计算1小时后的UTC时间
one_hour_later = datetime.now(timezone.utc) + timedelta(hours=1)

# 推送内容配置
message_title = "延迟推送通知"
message_body = "这是设置了延迟1小时后的推送内容"
target_device_id = "目标设备的Registration ID"

# 发送单设备定时推送
push_result = push_service.single_device_data_message(
    registration_id=target_device_id,
    message_title=message_title,
    message_body=message_body,
    schedule_time=one_hour_later
)

# 打印推送结果,方便排查问题
print("推送请求结果:", push_result)

多设备推送的适配

如果需要给多个设备发送定时推送,只需改用multicast_messages方法,同样传入schedule_time参数即可:

target_device_ids = ["DEVICE_ID_1", "DEVICE_ID_2", "DEVICE_ID_3"]

push_result = push_service.multicast_messages(
    registration_ids=target_device_ids,
    message_title=message_title,
    message_body=message_body,
    schedule_time=one_hour_later
)

注意事项

  • 预定消息的最长延迟时间为30天,超过这个时间FCM会拒绝请求。
  • 若目标设备在预定时间处于离线状态,FCM会在设备上线后立即推送,但如果超过消息的time_to_live(默认4周),消息会被丢弃。
  • 务必使用UTC时间设置schedule_time,否则会因为时区差异导致推送时间不符合预期。

内容的提问来源于stack exchange,提问作者Kuldeep Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:13:16