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
相关产品推荐
相关产品推荐

