在后台任务上访问设备存储不起作用

时间:2019-08-29 11:19:03

标签: react-native expo background-task asyncstorage

我使用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,但也没有帮助,它在应用运行时为我写了“未找到表项目”。

我开始认为,当任务以终止模式运行时,它不会寻找正确的路径,或者它没有从设备存储中读取的权限。

我想念什么?

谢谢。

0 个答案:

没有答案