我正试图实现与React Native应用程序与此插件react-native-push-notifications推送通知.我成功的是得到通知时,应用程序正在运行(在前台),但我想做的是得到本地通知时,应用程序被关闭(后台),不运行,当我得到通知进入应用程序.
这是我的代码--
PushNotification.createChannel({
channelId: "alarm-channel",
channelName: "Alarm Channel",
importance: 4,
vibrate: true,
});
};
const [selectedDate, setSelectedDate] = useState(new Date());
const handleDatePicker = (dateTime) => {
const fireDate = dateTime;
PushNotification.localNotificationSchedule({
channelId: "alarm-channel",
title: 'title',
id: alarmNotifData.id,
message: 'message',
date: fireDate ,
soundName: "Default",
actions: ["Snooze", "Stop Reminder"],
importance: Importance.HIGH,
playSound: true,
allowWhileIdle: true,
invokeApp: false,
priority: "high",
timeoutAfter: 50000,
autoCancel: false,
vibrate: true,
vibration: 500,
});
};
handleDatePicker(selectedDate);
2条答案
按热度按时间snvhrwxg1#
如果您希望在后台实现通知。我强烈建议采用
@notifee/react-native
包。Installation instructions
你可以使用React Native AppState来检查你当前是在应用的前台还是后台。
对于iOS,我个人喜欢使用
AppState.current === "inactive"
,因为它的生命周期总是活动-〉非活动-〉后台。对于Android,我使用
AppState.current === "background"
,因为Android只有active -〉background首次导入AppState和notifee
在应用程序设置代码中,为appState创建一个状态变量,并设置一个AppState侦听器
然后,在代码中的某个地方,你可以说。
在android中,如果你在打开一个通知时发现你的应用程序的一个新示例正在被创建,请确保检查你的
AndroidManifest.xml
。过去我花了几个小时才修好。AndroidManifest.xml
所讨论整个活动祝你好运!
pkwftd7m2#
在应用关闭时使用后台服务运行代码。对于Android,react-native有Headless。js,但要做到这一点,你需要写一些原生代码。不幸的是,react-native目前没有IOS文档。
对于Android:https://reactnative.dev/docs/headless-js-android
这是一个适用于iOS和Android的库:https://www.npmjs.com/package/react-native-background-actions