当应用程序处于后台或在本机中被杀时,是否可以检查用户的移动活动?

时间:2018-05-07 06:39:06

标签: react-native location accelerometer sensor

我们正在开发实时位置共享应用,我们必须在应用处于后台时运行我们的工作,如果它正在移动,我们需要获取用户的位置。

是否有反应原生的可能性,以便我们可以跟踪用户移动活动(在后台和被杀死状态)并跟踪位置或运行后台作业?

1 个答案:

答案 0 :(得分:1)

尝试侦听AppState更改,当您的应用程序进入后台时,您应该开始执行您想要执行的操作。

import { AppState } from 'react-native';
import BackgroundTimer from 'react-native-background-timer';


state = {
        appState: AppState.currentState
    }

在componentDidMount中使用:

AppState.addEventListener('change', this._handleAppStateChange);

在componentWillUnmount中:

AppState.removeEventListener('change', this._handleAppStateChange);

使用类似此功能的功能,当应用程序在后台时,您将获得结果。

_handleAppStateChange = (nextAppState) => {
        if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
            console.log('App has come to the foreground!');
        } else {
            console.log('App is in background');
            const interval = BackgroundTimer.setInterval(() => {
                    console.log('listen for location changes here');
                    if (this.state.appState === 'active') {
                        //Stop the interval when AppState goes 
                        //back to active again
                        BackgroundTimer.clearInterval(interval);
                    }
                }, 1000);
          }
        }
        this.setState({ appState: nextAppState });
    }