我在可用设备存储空间不足的iOS设备上遇到问题。
当用户使用Firebase身份验证登录时,它可以成功运行。但是当他离开应用程序时,会经过一段时间,然后再次打开该应用程序,会话丢失。一天可能会发生多次。
我认为根本原因是,当可用设备存储空间不足时,iOS正在删除缓存文件夹:
我的Ionic Cordova应用程序使用Firebase的 Web SDK ,因此数据保存在WebView的 IndexedDb 中,该WebView放入缓存文件夹。
一个典型的解决方案是用Cordova Plugin into SQLite.
保存在本地应用程序上下文中运行时,存储将优先使用 SQLite,因为它是最稳定且使用最广泛的基于文件的文件之一 数据库,并避免了诸如本地存储之类的某些陷阱 和IndexedDB,例如操作系统决定以较低的价格清除此类数据 磁盘空间情况。
我的问题现在是,我无法控制Firebase Web SDK将数据保存在何处。
我可以掌握refreshToken,但是显然除了实现自己的Login Mechanism
之外,别无它法我考虑过在用户登录后“备份” IndexedDb中的数据,并在必要时在App启动时将其还原,但这并不像使用localstorage那样容易。 (似乎是解决方法here)
创建了一个可以处理此问题的库,但依赖它似乎有点诡异:https://github.com/Polarisation/indexeddb-export-import
好像是一个庞大的任务
所以我想知道我现在能做什么。
感谢您的任何建议!
版本信息:
x^5
科尔多瓦:
Firebase: 4.12.1
angularfire2: 5.0.0-rc.4
Angular: 5.2.10
ionic-angular": 3.9.2