Hybrid使用localStorage储存数据不靠谱!

 在Hybrid作App,须要保存一些数据在本地,通常会使用HTML5的特性localStorage和sessionStorage,具体的介绍请看这里;本文的重点不在于介绍localStorage,而是经过个人遭遇侧重描述为何HybridApp的数据存储在localStorage不靠谱...html

    我先来描述一下场景,我是负责用HTML5也就是Hybrid作Ios开发的,在9月底,最近发布了一个新版本后,陆陆续续发现有几个使用ios用户告知的一个现象,说每次使用APP都须要从新登陆!用户的描述是,登陆之后,当天杀掉进程是不会再使用App是不用从新登陆的,可是过几天之后,再使用App就会要从新登陆;ios

    在定位问题的时候,我一般会要按照如下几个步骤:服务器

        1.出现该bug的用户是大面积的群体仍是个别几个:微信

                群体性:很大多是代码问题,或者服务器问题,由于使用的是同一个app,同一个服务器接口或者同一个服务器的访问地址;cookie

                个别几个:极可能与用户的行为,场景有关,在某些特别的时候,就会触发app出现某个bug;session

        2.出现该bug的用户是否存在相似类似的地方:若是存在类似的地方,那就模仿用户的操做,或者模拟用户的场景,尽可能复现问题;app

        3.出现该问题的逻辑:检查这块逻辑代码,是否存在出现问题的可能,调试与模仿用户的操做;ionic

    首先,这个“从新登陆”的问题不是群发性的由于这几位用户分布在全球,而且这个问题,咱们按照用户的操做在测试手机上怎么测试都没有复现;第二,这个问题出现是个别几个不同的用户,都是广泛的登陆操做,没有任何移异常的地方;第三,我十分明确我代码“登陆”这块逻辑的数据存储是保存在localStorage上的,在启动app的时候去检查localStorage是否存在用户登陆的数据,若是不存在,则从新登陆,而且在日志中,我发现不仅仅是登陆数据被清除,是全部存储在localStorage都没有了;post

    综上所述,我基本能获得一个初步结果:在某些特定的状况下,localStorage被清除了!测试

    为了进一步肯定某些特定的状况下,我想象过许多可能性

        1.因为app9月底发布新版本的时候,apple公司刚刚发布ios10,而且在app日志中能明显发现的是,出现该问题的大部分是ios10的用户!而且在google中也能发现相似的言论!这里,难道与ios10系统有关?直到我发现一位用户用的是Ios8,我才完全推翻这个想法;

        2.是否是我代码中,调用了localStorage.clear()方法,强制的清空了全部内存?而后我搜索的全部代码,并无!

        3.是否是手机启用的app太多,致使系统内存(RAM)不足,而后强制清除了呢?为了实现这个想法,我在手机中安装了好几个大型游戏,把手机都玩得烫的不要不要的,也没有出现;

        在纠结了半天后,在google获得了一个重大发现, 这里;这篇文章中,描述了,在ios8中,当系统空间不足的时候,系统会清除localStorage中的数据!

        得知这个消息后,我立刻安排测试的小伙伴去测试,先登陆app,而后多下点应用,把空间使用完;

        而后我打电话咨询了两位客户,获得的消息是,这两位客户,手机空间常常不足,最直观的表现是微信常常提醒要清理空间,他们用的都是16G的Iphone手机!打完电话回到座位,测试的小伙伴兴奋的说,复现了复现了,当内存不足的时候,系统那里会出现个什么正在清除数据...而后,打开app后,就发现数据被清空了;因此,出现问题的缘由是,当系统存储空间不足时,会触发系统级别的清理,而且清除的对象,就有localStorage;

        这就是这个奇妙之旅。因此,localStorage存储数据,在ios中确实不靠谱!在ios系统中这个localStoreage不是一种持久化的数据!虽然这个不是app引起的问题,可是,这个问题仍是得解决!后面若是找到了解决方案,再一篇文章作作记录呗....

        另外,本文仅描述ios,在找资料的同时,也相关的资料说,localStorage在Android一样不靠谱,可是我没实测,具体请看 这里;

 

资料:

https://forum.ionicframework.com/t/ios-localstorage-persistence/20004/17

http://gonehybrid.com/dont-assume-localstorage-will-always-work-in-your-hybrid-app/

https://forum.ionicframework.com/t/ionic-1-ios-10-local-storage-issue/63519

最新文章地址:  https://blog.niezw.com/post/8bf0e032.html

相关文章
相关标签/搜索