我使用expo创建了一个后台任务,用于位置更新(如此处所述的expo): https://docs.expo.io/versions/latest/sdk/location/
我想向服务器发送用户位置,因此我需要从设备存储中读取访问令牌。
类似这样的东西:
defineTask(LOCATION_TASK_NAME, ({ data, error }) => {
const accessToken = await AsyncStorage.getItem('accessToken')
fetch(SERVER_URL + '/' + 'update_user_location', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + accessToken
},
body: data
}
})
问题在于,如果任务在终止模式下运行,await AsyncStorage.getItem('accessToken')
将返回null,当应用处于打开状态/后台运行时,它可以正常工作!
我还尝试使用FileSystem替换AsyncStorage(对文件读取和读取accessToken),并且也无法正常工作,它为我编写了类似“ File .... not found”的内容,并且还尝试使用expo的SQLite,但也没有帮助,它在应用运行时为我写了“未找到表项目”。
我开始认为,当任务以终止模式运行时,它不会寻找正确的路径,或者它没有从设备存储中读取的权限。
我想念什么?
谢谢。