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

Expo 40.0.0版本本地通知:如何设置明日特定时间启动并每日重复

解决Expo本地通知:明日特定时间启动并每日重复

针对你的需求,我来帮你把两个功能合并——实现明日20:00首次触发,之后每日重复的本地通知。在你使用的Expo 40.0.0和expo-notifications ~0.8.2版本中,只需要把两个函数的关键配置结合起来即可,以下是完整解决方案:

正确的通知配置函数

function scheduleDailyNotificationStartingTomorrowAt20() {
  // 计算明日20:00的精确时间(时、分、秒、毫秒都设为0,避免时间偏差)
  const tomorrow = new Date();
  tomorrow.setDate(tomorrow.getDate() + 1);
  tomorrow.setHours(20, 0, 0, 0);

  return {
    content: {
      title: "Time to study v2",
      body: "Don't forget to study today!",
    },
    trigger: {
      date: tomorrow,       // 指定第一次触发的具体时间(明日20:00)
      repeats: true,        // 开启重复通知开关
      interval: 'day'       // 设置重复周期为1天
    }
  };
}

调用方式

和你之前的调用逻辑一致,直接传入配置即可:

Notifications.scheduleNotificationAsync(scheduleDailyNotificationStartingTomorrowAt20());

关键逻辑说明

你之前的两个函数之所以无法同时满足需求,核心原因是配置不完整:

  • 第一个函数仅指定了单次触发的日期,但缺少重复规则配置
  • 第二个函数用秒数间隔实现重复,但无法绑定具体的初始触发时间

而新的配置完美结合了两者优势:

  • date: tomorrow确保第一次通知在明日20:00准时触发
  • repeats: true + interval: 'day'的组合,让通知在首次触发后,每天同一时间自动重复推送

额外注意事项

  • 务必保证设备系统时间准确,通知触发完全依赖系统时间
  • 如果需要快速测试功能,可以临时把tomorrow.setDate(tomorrow.getDate() + 1)改成tomorrow.setMinutes(tomorrow.getMinutes() + 2),验证首次触发和重复逻辑是否正常
  • 在expo-notifications ~0.8.2版本中,使用date触发重复通知时,必须搭配interval参数(可选值包括minute、hour、day、week等),否则重复规则不会生效

内容的提问来源于stack exchange,提问作者Bogdan Oloeriu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:38:10