React Native Expo问题:定时通知立即触发而非按设定时间执行
Expo定时通知立即触发的原因分析
以下是导致你的定时通知忽略时间参数、立即执行的常见原因:
目标时间已过当日对应时刻
当你仅通过hour和minute设置触发时间时,Expo默认会将触发时间定为当天的该时刻。如果当前时间已经晚于9点40分,通知会立即触发,因为系统认为“已到触发时间”。未明确指定日期导致逻辑偏差
若你希望通知在未来的某个特定日期(比如明天9点40分)触发,仅传hour和minute是不够的。需要手动构建一个Date对象来指定完整的触发时间,例如:const triggerDate = new Date(); triggerDate.setDate(triggerDate.getDate() + 1); // 设置为明天 triggerDate.setHours(9, 40, 0, 0); // 设置时分秒 Notifications.scheduleNotificationAsync({ content: { title, body, data: { data: 'goes here', test: { test1: 'more data' } } }, trigger: { date: triggerDate, repeats: false }, });时区不匹配
设备的本地时区与你预期的时区不一致时,会导致触发时间计算错误。比如你预期的是北京时间9点40分,但设备时区是UTC,此时计算出的触发时间可能已经过去,进而立即执行通知。expo-notifications版本存在bug
部分旧版本的expo-notifications库存在定时触发逻辑的问题,建议升级到最新的稳定版本,再测试通知功能。
内容的提问来源于stack exchange,提问作者Dominik Tužil
相关产品推荐
相关产品推荐

