第一次做移动端,本来想再请求头赋token,但发现一直没值,现在单独写了一个点击事件发现,h5端页面调试页存储和拿取没有问题,拿手机测就取不到值,这是为啥?
移动端嵌入h5页面打开APP后, 获取不到我存储的token
是在手机app中不行吗?试试看把对象转为JSON.stringify(obj)再存储
参考GPT和自己的思路,根据您提供的代码,我看到您使用了 uni.setStorageSync 和 uni.getStorageSync 来在本地缓存中存储和获取 token。在移动端,有时候由于缓存策略和安全性限制,可能会导致在获取缓存数据时出现问题。
有几种方法可以尝试解决这个问题:
请确保您使用的是最新版本的 uni-app,以避免已知的缓存问题。
请尝试在获取 token 时,将其打印到控制台,以确保您能够成功获取 token。如果打印出了 token 值,那么问题可能出在缓存方面。
请尝试使用异步的方式获取 token,这样您就可以确保在获取 token 后才执行下一步操作,例如:
applyCerth(){
getToken().then(res => {
uni.setStorageSync("mytoken", res.data.msg)
const uniToken = uni.getStorageSync("mytoken")
this.$u.toast(uniToken);
// 在这里执行下一步操作
}).catch(error => {
console.log(error);
// 处理错误情况
});
}
如果您仍然无法获取到缓存中的 token,您可能需要调查缓存策略和安全性限制的问题。
如果对您有帮助,请给与采纳,谢谢。
以下答案基于ChatGPT与GISer Liu编写:
有没有可能拿手机测的时候接口报错了
可能是Storage Key的名称写错或者内存满了
你看看使用这个思路:uni-app跳转(传参)+设置获取缓存
提供参考实例:链接:https://code84.com/848307.html
在使用uni-app开发移动端应用时,有时候可能会出现获取不到Storage的问题,可能是因为以下原因:
第一:在uni-app中,Storage分为两种,一种是本地缓存localStorage,另一种是会话缓存sessionStorage。其中,localStorage是长期存储,即使关闭页面或者应用也不会丢失数据,而sessionStorage是会话级别的缓存,关闭页面或应用后会丢失数据。因此,如果是使用sessionStorage进行缓存,可能会出现获取不到Storage的问题。
第二:uni-app中的Storage是基于WebView实现的,如果WebView的版本过低,可能会出现获取不到Storage的问题。
第三:如果在uni-app的manifest.json文件中禁用了Storage模块,也可能会导致获取不到Storage的问题。
为了解决这些问题,可以采取以下方法:
检查是否是使用了sessionStorage进行缓存,如果是,可以改用localStorage来进行缓存。
检查WebView的版本是否过低,如果是,可以尝试升级WebView版本。
检查manifest.json文件是否禁用了Storage模块,如果是,可以将Storage模块启用。
在使用Storage时,最好先判断是否支持Storage,避免出现获取不到Storage的问题。可以使用以下代码进行判断:
if (window.localStorage) {
// 支持localStorage
} else {
// 不支持localStorage
}
如果以上方法都没有解决问题,可以尝试清除缓存或者重启应用,有时候可能是缓存或者应用状态导致的问题。
在uniapp中,可以使用uni.getStorageSync(key)来获取缓存数据,其中key是缓存数据的键值。如果该函数返回值为空,则表示该键值对应的缓存数据不存在。如果你发现在移动端获取不到缓存数据,可以尝试以下几种解决方法:
1.检查是否设置了缓存数据
确保在设置缓存数据时,使用的是uni.setStorageSync(key, data)函数,并且该函数没有报错。如果设置缓存数据时报错了,可能是因为key值不合法或者存储空间已满等原因导致。
2.检查是否设置了Storage权限
在移动端获取缓存数据时,需要先获取Storage权限。在uni-app的manifest.json文件中,可以添加如下配置:
"app-plus": {
"name": "uni-app",
"permissions": {
"storage": {
"description": "允许访问存储空间"
}
}
}
3.检查是否使用了异步缓存方法
在移动端,使用异步的缓存方法uni.setStorage和uni.getStorage可能会出现数据获取不到的情况。建议使用同步的缓存方法uni.setStorageSync和uni.getStorageSync。
4.检查是否清除了缓存数据
如果在移动端使用uni.removeStorageSync(key)函数清除了缓存数据,那么该数据就不存在了,因此无法获取到。
在uni-app中,采用使用Storage模块,来来辅助存储、访问关键数据,移动端时,有时候获取到的Storage是null,有可能是Storage的bug引起的,可以尝试以下方法解决:
原因是因为移动端和web端存储位置上有所不同,存储在web端可以正常获取,而移动端则需要在uni.setStorageSync中使用绝对路径来获取和存储数据,比如uni.setStorageSync('homePages/index/index', 'token'),其中的homePages/index/index为相对于项目的绝对路径,需要传入相关路径后才可以正常获取token值。此外,移动端获取存储的token的时候,也需要穿入同样的绝对路径,例如: uni.getStorageSync('homePages/index/index')。