我正在使用 expo 构建一个 React Native 应用程序。我可以像这样每天发送通知
Notifications.scheduleNotificationAsync({
content: {
title: "Reminder",
body: "lorem ipsum",
},
trigger: {
hour: 12,
minute: 30,
repeats: true,
},
});
我的目标是每天同一时间向用户发送提醒。我想每天从数据库或一组消息发送不同的提醒消息,我该如何做到这一点?被卡了一段时间
此安排通知的方法不允许在通知触发时运行特定代码。如果您有下次要发送的消息,则可以在安排通知时获取该数据。否则,我认为您应该使用 expo 的推送 API 以及某种 cron 作业在服务器端应用程序上执行此操作。
另一种替代方案可能是 BackgroundFetch api,但您需要编写一些逻辑来重新安排任务以获取数据并发送通知。
我有同样的任务,我是这样做的:
export const ScheduleNotification = async () => {
try {
// Cancel all existing notifications
await Notifications.cancelAllScheduledNotificationsAsync();
// Your logic to get the data...
// ...
// ...
// ...
const { quote: title, story: body } = quoteData;
// Schedule the new notification
await Notifications.scheduleNotificationAsync({
content: {
title,
body,
data: { id },
},
trigger: { hour: 6, minute: 34, repeats: true },
});
console.log('Dynamic daily notification scheduled!');
} catch (error) {
console.error('Error scheduling dynamic daily notification:', error);
}
};
顺便说一句,我使用 AsyncStorage 来获取我需要的所有数据。