React Native 如何配置通知实现每周四15:00定时推送
解决方案
你使用的react-native-push-notification库原生支持按周期重复推送的能力,仅需要在原有配置基础上新增重复规则、同时将首次触发时间调整为目标时间即可实现每周四15:00推送的需求。
修改后完整代码
// 工具函数:自动计算下一个周四15:00的日期对象,避免硬编码固定日期失效 const getNextThursday15 = () => { const now = new Date(); const currentDay = now.getDay(); // 系统方法返回值:周日为0,周四为4 // 计算距离下一个周四的天数 const daysUntilThursday = currentDay < 4 ? 4 - currentDay : 4 + (7 - currentDay); const nextThursday = new Date(now); nextThursday.setDate(now.getDate() + daysUntilThursday); // 固定时间为15点整 nextThursday.setHours(15, 0, 0, 0); // 兼容当天是周四但已过15点的场景,自动顺延到下一周 if (nextThursday < now) { nextThursday.setDate(nextThursday.getDate() + 7); } return nextThursday; } const pushNoti1 = () => { PushNotification.localNotificationSchedule({ channelId: "test-channel", title: "Неблагоприятный день для:", message: "Today is Thursday", date: getNextThursday15(), // 替换为动态计算的首个触发时间 id: 1, repeatType: 'week', // 核心配置:指定按周重复触发 allowWhileIdle: true, // 可选配置:设备低功耗 idle 状态下也可触发通知 }); }
核心配置说明
repeatType:库内置支持的重复周期参数,可选值包括minute/hour/day/week/month/year,设置为week即可实现按周重复。
注意事项
- 安卓端需要提前创建对应
channelId的通知通道,否则通知无法正常展示 - 推送前需要先向用户申请通知权限,权限未授予的情况下通知无法弹出
- 若后续需要取消该重复通知,调用
PushNotification.cancelLocalNotification(1)即可,参数对应配置的通知id - 若需要全局统一时区触发,可以在计算日期时修正时区偏移,避免不同地区用户触发时间不一致
内容的提问来源于stack exchange,提问作者Мухаммаднакшубанди Омаров
相关产品推荐
相关产品推荐

