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

Flutter日历应用:如何用OneSignal API实现无限重复定时通知

日历应用重复定时通知的OneSignal实现方案

一、OneSignal API原生支持的重复定时通知配置

OneSignal的计划通知(Scheduled Notifications)支持通过recurrence参数配置永久重复规则,具体选项如下:

  • 每日重复:指定重复类型为daily,可通过interval设置间隔天数(默认1天)
  • 每周重复:指定类型为weekly,搭配weekdays数组设置重复的星期(1=周一,7=周日),例如[1,3,5]代表周一、周三、周五重复
  • 每月重复:两种模式可选:
    • 按固定日期:{"type": "monthly", "day_of_month": 15}(每月15号触发)
    • 按周几:{"type": "monthly", "week_of_month": 2, "weekday": 3}(每月第2个周三触发)
  • 每年重复:指定类型为yearly,搭配month和day设置固定日期,例如{"type": "yearly", "month": 10, "day": 5}(每年10月5号触发)

请求示例(POST创建永久重复通知)

POST /notifications
{
  "app_id": "你的OneSignal应用ID",
  "contents": {"en": "事件提醒:你有一个待办事项即将开始"},
  "scheduled_time": "2024-06-01T09:00:00Z", // 首次触发的UTC时间
  "recurrence": {
    "type": "daily",
    "interval": 1
  },
  "include_player_ids": ["目标用户的Player ID"]
}

注:该配置默认永久重复,若需停止可添加end_time字段指定停止的UTC时间。

二、原生功能受限的替代实现逻辑

如果因版本兼容或其他限制无法使用原生重复功能,可通过以下两种方案实现无限重复通知:

  • 方案1:触发后自动创建下一次通知
    1. 在客户端监听OneSignal的通知接收/点击事件
    2. 当通知触发时,根据原事件的重复规则(日/周/月/年)计算下一次触发的UTC时间
    3. 调用OneSignal API创建该时间点的计划通知,以此循环实现永久重复
  • 方案2:批量生成未来N次通知
    1. 根据事件重复规则,一次性生成未来6个月/12个月的所有触发时间点
    2. 调用OneSignal API批量创建这些时间点的计划通知
    3. 当用户修改事件重复规则时,删除所有未触发的通知,重新生成新的计划通知

注意:所有时间计算需处理时区转换,确保最终传入OneSignal的scheduled_time为UTC时间,避免通知时间偏差。

内容的提问来源于stack exchange,提问作者Tomas Ward

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:23:24