HawkLu92
HawkLu92
  • 发布:2024-06-26 17:07
  • 更新:2024-06-26 17:08
  • 阅读:138

【报Bug】plus.storage.setItem() 设置应用级storage,当数据量过大时,IOS平台获取不到数据

分类:HTML5+

产品分类: HTML5+

HBuilderX版本号: 4.15

手机系统: iOS

手机系统版本号: iOS 17

手机厂商: 苹果

手机机型: iPhone14

打包方式: 离线

示例代码:

APP壳子部分

Promise.all(promises).then(resp => {  
    console.log(JSON.stringify(resp).length);     //数据长度  
    plus.storage.setItem('imgJSON',JSON.stringify(resp))  
    this.wv.evalJS(`onAppCallBack('${JSON.stringify({msg:'chooseImageSuccess'})}')`)        //大数据异常缓慢  
    uni.hideLoading()  

})

H5处理部分

sendAppMessage({  
    type: 'chooseImage',  
    params: params  
}, (payload) => {  
    let imgJSON= plus.storage.getItem('imgJSON')   //取应用级的storage     
    console.log(imgJSON);       //数据过大时为 null  
    let promises = JSON.parse(imgJSON).map(item => {  
    return imgBase64ToPath(item).then(res => {  
            return getCompressImageSize(res)  
        })  
    })  
    Promise.all(promises).then(res => {  
        let files = {  
            tempFiles: res,  
            tempFilePaths: res.map(item => {  
                return item.path  
            })  
        }  
        plus.storage.removeItem('imgJSON')      //移除应用级storage  
        resolve(files)  
    })  
})  

操作步骤:

如上

预期结果:

evalJS 或 plus.storage 至少有一个能正常

实际结果:

红框为第一次,蓝色框为第二次

bug描述:

因为公司业务需要,我现在有一个APP的壳子,壳子内容是一个webview加载公司的相关H5页面,因为业务需要,H5选择图片时,调用壳子的方法来选择图片,然后把选择的图片传给H5,我能想到的是吧图片转为base64,然后把base64传给H5
方案1:通过webview.evalJS()来传参,但是实际开发中发现evalJS处理数据过大后反应特别慢,而且在io平台获取不到数据
方案2:通过plus.storage.setItem() 设置应用级的缓存,H5来获取

bug1:evalJS执行时数据量如果过大,安卓平台会特别慢,ios平台获取不到数据
bug2:plus.storage.setItem() 如果数据量大,ios平台获取不到

2024-06-26 17:07 负责人:无 分享
已邀请:
HawkLu92

HawkLu92 (作者) - GoodGoodCoding,DayDayNoBug

红色第一次,蓝色第二次

要回复问题请先登录注册