我目前拥有发送用户位置的路由,并且isOnline:当应用打开时为true,当用户关闭应用时,我想更新常规数据,也将isOnline:false更新为Firebase Realtime D B。我尝试使用控制台日志来准确确定何时发生卸载,但是这不足以让我知道。也许我对componentWillUnmount的工作方式有误!
(如果这是一个重复的问题,我非常抱歉。在我决定发布此消息之前,我找了大约一个小时)
这是我的卸载:
componentWillUnmount() {
this.userDisconnectHandler();
navigator.geolocation.clearWatch(this.watchID);
this.stopTimer();
}
这是我的disconnectHandler:
userDisconnectHandler() {
var postDataRef = firebase.database().ref(`live-data/${userName}`);
console.log("disconnected")
navigator.geolocation.getCurrentPosition(
(position) => {
postDataRef
.set({
coordinate: {
longitude: position.coords.longitude,
latitude: position.coords.latitude,
},
userName: `${userName}`,
isOnline: false,
})
.then(() => console.log("finalPostComplete"))
.catch((err) => console.log(err));
},
(err) => console.log(err)
);
}
答案 0 :(得分:1)
您可能想尝试AppState https://reactnative.dev/docs/appstate
根据文档
AppState可以告诉您应用是在前台还是在后台, 并在状态更改时通知您。
AppState通常用于确定意图和正确性 处理推送通知时的行为。
适合您的情况。