我正试图实现Notifee触发器与React Native应用程序与此插件@notifee/react-native。我成功的是得到通知时,应用程序正在运行(在前台),但我想做的是得到本地通知时,设备被锁定(在锁定的设备通知来与延迟4-5分钟)
这是我的代码--
async function scheduleNotification() {
const notificationDate = new Date(date);
const notificationTime = new Date(time);
const notificationTimestamp = notificationDate.setHours(
notificationTime.getHours(),
notificationTime.getMinutes(),
0,
0,
);
await notifee.createChannel({
id: 'default',
name: 'Default Channel',
importance: AndroidImportance.HIGH,
});
// Create a time-based trigger
const trigger = {
type: TriggerType.TIMESTAMP,
timestamp: notificationTimestamp,
importance: AndroidImportance.HIGH,
visibility: AndroidVisibility.PUBLIC,
};
await notifee.createTriggerNotification(
{
title: title,
body: desciption,
android: {
channelId: 'default',
actions: [snoozeAction, dismissAction],
category: AndroidCategory.CALL,
// importance: AndroidImportance.HIGH,
fullScreenAction: {
id: 'default',
launchActivity: 'com.myapp.CustomActivity',
},
importance: AndroidImportance.HIGH,
visibility: AndroidVisibility.PUBLIC,
vibration: true,
loopSound: true,
sound: 'Default',
timeoutAfter: 6000,
vibrationPattern: [300, 500],
},
},
trigger,
);
}
1条答案
按热度按时间scyqe7ek1#
默认情况下,Android通知触发器将使用
WorkManager API
。将此API用于通知并不保证通知的确切时间,因此如果您的应用程序通知对时间敏感,则需要使用AlarmManager API
。Notifee将TimestampTrigger
上的alarmManager
属性默认为false
,这会导致通知使用更少的电池电量(使用WorkManager API),但不会提供确切的通知时间。如果您的通知对时间敏感,需要精确的时间,请更改代码以使用
alarmManager
,如下所示:请注意,您的代码可能只需要设置
alarmManager: true
,在这种情况下,您可以省略allowWhileIdle
属性。allowWhileIdle选项是AlarmManager API的特定配置。如果设置为true,则允许您的应用唤醒设备以便执行任务,即使设备处于低电耗模式也是如此。根据您的需求进行调整。最后,我不知道你用什么软件包来要求你的用户通知权限。确保您向用户请求
alarm
权限,以便使用AlarmManager功能。希望这能解决你的问题!