用户关闭应用程序时,React-Native Expo会发送Firebase帖子

时间:2020-10-19 02:20:19

标签: react-native firebase-realtime-database expo

我目前拥有发送用户位置的路由,并且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)
    );
  }

1 个答案:

答案 0 :(得分:1)

您可能想尝试AppState https://reactnative.dev/docs/appstate

根据文档

AppState可以告诉您应用是在前台还是在后台, 并在状态更改时通知您。

AppState通常用于确定意图和正确性 处理推送通知时的行为。

适合您的情况。