如果本地注销用户在一段时间内处于空闲或不活动状态,请进行响应

时间:2019-05-17 05:04:04

标签: react-native react-redux react-native-router-flux

我正在使用react-redux,如果他们在10分钟内处于非活动状态(屏幕上没有触摸)或应用进入后台,则需要能够注销该用户。我应该怎么做?

我尝试在根容器中创建一个计时器,并更新每x秒左右更新的reducer,并使用平移手势在触摸时重置计时器。但这没有用,因为每次redux状态更新时,我的应用程序都会刷新。

有人有什么解决办法吗?我试图寻找一个功能类似但没有运气的npm包裹。

3 个答案:

答案 0 :(得分:0)

您可以集成此npm软件包react-native-background-timer 在指定的时间间隔后,这可以运行一段代码(注销功能)。

答案 1 :(得分:0)

保护和限制登录时间的最佳方法是使用JWT令牌使其安全,并确保一定时间后您要关闭的会话的时间限制

答案 2 :(得分:0)

您可以使用https://facebook.github.io/react-native/docs/appstate来了解应用程序是在后台还是在前台。

因此,当应用程序进入后台时,您可以调度设置当前时间的操作。

当应用程序进入前台时,您将检查当前时间与调度时间之间的时差(当应用程序进入后台时)。如果条件匹配,您可以做任何您想做的事情。

componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
}

componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
}

_handleAppStateChange = (nextAppState) => {
    const { appState } = this.state;
    if (appState.match(/inactive|background/) && nextAppState === 'active') {

        // Compare Current Time with Dispatched Time Here

    } else if (appState.match(/inactive|active/) && nextAppState === 'background') {

        // Dispatch current time here.

    }
    this.setState({appState: nextAppState});
};