Звук запланированного уведомления не обновляется и появляется с опозданиемAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Звук запланированного уведомления не обновляется и появляется с опозданием

Сообщение Anonymous »

Я работаю над собственным приложением Adhan (молитва), реагирующим на молитву, в которое мне нужно интегрировать 5-кратные молитвенные будильники. Я использую библиотеку @notifee/react-native для планирования локальных уведомлений о тревоге. Я столкнулся с двумя проблемами.
Проблемы
Во-первых, когда я пытаюсь обновить уже запланированный звук уведомления, он не обновляется с добавлением нового файла. имя. мои звуковые файлы находятся в папке raw/. Странно то, что когда я перечисляю запланированные уведомления, он показывает, что звук обновлен, но когда появляется уведомление, он воспроизводит звук, который был установлен при первой настройке. Я проверяю документацию, в которой говорится, что настройку звука нельзя переопределить после создания канала, поэтому я пытаюсь удалить повторное создание канала каждый раз, когда происходит перепланирование уведомлений, но проблема с изменением не остается прежней. см. мою функцию ScheduleAlarmNotification;
Во-вторых, уведомление приходит с задержкой не только на несколько секунд, но и на несколько минут, каждый раз, когда я тестировал, с задержкой в ​​12 и 26 минут на реальном устройстве. Уведомление показывает точное время в сообщении, но приходит с опозданием.
Код

Код: Выделить всё

import notifee, {
AndroidImportance,
TimestampTrigger,
TriggerType,
} from '@notifee/react-native';
import moment from 'moment';

export async function scheduleAlarmNotification(
id: string,
title = 'Alarm',
timestamp: any,
sound = 'adhan_short',
enabled = true,
) {
let channelId;
await notifee
.deleteChannel(`sound`) //${id}_channel
.then(async res => {
console.log('🚀 ~ awaitnotifee.deleteChannel ~ res:', res);
channelId = await notifee.createChannel({
id: `sound`,
name: 'Alarm Notifications',
sound: sound, // Set custom sound
importance: AndroidImportance.HIGH,
});
})
.catch(err => {
console.log('🚀 ~ awaitnotifee.deleteChannel ~ err:', err);
});

const trigger: TimestampTrigger = {
type: TriggerType.TIMESTAMP,
timestamp,
};
if (enabled) {
console.log('Alarm scheduling...');
try {
await notifee.createTriggerNotification(
{
id, // Unique identifier for the notification
title,
body: `It's ${title} time: ${moment(timestamp).format('h:mm:ss A')}`,
android: {
channelId,
sound,
pressAction: {
id: 'open_alarm',
},
// actions: [
//   {
//     title: 'Stop',
//     pressAction: {
//       id: 'stop-alarm', // Unique ID for Stop action
//     },
//   },
//   {
//     title: 'Snooze',
//     pressAction: {
//       id: 'snooze-alarm', // Unique ID for Snooze action
//     },
//   },
// ],
},
},
trigger,
);
} catch (error) {
console.log('🚀 ~ notifee schedule error:', error);
}
} else {
try {
await notifee.cancelNotification(id).then(res => {
console.log('🚀 ~ awaitnotifee.cancelNotification ~ res:', res);
});
} catch (error) {
console.log('🚀 ~ notifee cancel error:', error);
}
}
}
Я перепланирую отправку уведомлений с таким же идентификатором уведомления, как этот.

Код: Выделить всё

scheduleAlarmNotification(
id, // if same id notification will re-schedule
title,
timestamp,
newSound,
true,
);
Я также попробовал сначала отменить уведомление, а затем снова запланировать его, но ничего не помогло.
package.json

Код: Выделить всё

"react": "18.3.1",
"react-native": "0.76.5",
"@notifee/react-native": "^9.1.8",
Я использую Android. iOS еще не протестирована.


Подробнее здесь: https://stackoverflow.com/questions/793 ... pears-late
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»