#javascript #react-native #notifications #expo #expo-notifications
Вопрос:
Я пытаюсь отменить запланированное уведомление от expo, указав идентификатор созданного объекта:
const newHabit = {
name: habitName,
color: updatedColor,
icon: habitIcon,
days: isEnabled ? daysCount : null,
times: isEnabled ? timesCount : null,
specificDate: isEnabledSpecific ? specificDate : null,
reminder: isEnabledDate ? reminderTime : null,
description: description,
completedDay: null,
currentDay: 0,
completed: false,
completedDates: {},
timesCompleted: 0,
progress: 0,
notificationId: Math.floor(Math.random() * 1000).toString(),
};
Я держу методы уведомления в другом, как это:
export default async function schedulePushNotification(content, trigger, repeats) {
await Notifications.scheduleNotificationAsync({
content: content,
trigger: trigger,
repeats: repeats,
});
}
export const cancelPushNotification = async (id) => {
try {
await Notifications.cancelScheduledNotificationAsync(id);
} catch (error) {
console.error(error);
}
};
Здесь я пытаюсь отменить его с помощью данного идентификатора уведомления: (данные поступают из реквизита от родителя и правильно включают созданный идентификатор уведомления).
cancelPushNotification(data.notificationId).then(() => {
if (habitReminderTime !== null) schedulePushNotification(content, trigger, repeats);
if (habitSpecificDate !== null)
schedulePushNotification(contentSpecific, triggerSpecific, false);
});
Он по-прежнему отправляет старые уведомления вместе с новыми. Так что это не работает. Есть какие-нибудь идеи?