我正在开发一个react原生应用程序,它需要在程序关闭时运行一些任务,我需要跟踪用户的位置。我遇到的问题是,当程序打开时,一切都很完美,但当程序关闭时,一切都不完美。
下面是用户按下按钮时调用的sleep函数:
function sleep() {
//Here, I register to receive background updates
return Location.startLocationUpdatesAsync(BACKGROUND_TAKS, {
accuracy: LocationAccuracy.BestForNavigation,
foregroundService:{
title :'location service',
text: 'tracking your location',
notificationTitle: 'Location...',
notificationBody: 'currently using location...'
},
// ? A notification must display now no ? Nothing is dispaying
deferredUpdatesDistance: 15, //every 15 meters
deferredUpdatesInterval: 10000, //ten secodes
pausesUpdatesAutomatically: false
})
};
这是我在全球范围内的背景任务:
defineTask(BACKGROUND_TAKS, async ({data: {locations}, error}) => {
if (error){
return console.log(error)
}
console.log('BACKGROUND LOCATION : ', locations)
})
问题是,当我退出应用程序时,它不工作。定位服务停止,我不再接收任何数据。我在谷歌像素模拟器和三星Galaxy S20上测试了我的代码,但两者都不工作。有人知道为什么它不工作吗?
预先感谢你的帮助。
1条答案
按热度按时间ubby3x7f1#
问题是,当我退出应用程序时,它不工作
你是退出你的应用程序还是把它移到后台?就像名字暗示的那样,后台任务将在应用程序仍然打开但手机上显示其他内容时工作。
如果要将其移至后台,请确保已授予location在后台运行www.example.com的权限https://docs.expo.dev/versions/latest/sdk/location/#usebackgroundpermissionsoptions