我们正在开发实时位置共享应用,我们必须在应用处于后台时运行我们的工作,如果它正在移动,我们需要获取用户的位置。
是否有反应原生的可能性,以便我们可以跟踪用户移动活动(在后台和被杀死状态)并跟踪位置或运行后台作业?
答案 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 });
}