当iOS存储空间不足时,Firebase身份验证不会持久[Ionic / Cordova]

时间:2018-07-11 16:01:41

标签: ios cordova firebase firebase-authentication

我在可用设备存储空间不足的iOS设备上遇到问题。

当用户使用Firebase身份验证登录时,它可以成功运行。但是当他离开应用程序时,会经过一段时间,然后再次打开该应用程序,会话丢失。一天可能会发生多次。

我认为根本原因是,当可用设备存储空间不足时,iOS正在删除缓存文件夹:

/Library/Caches directory

我的Ionic Cordova应用程序使用Firebase的 Web SDK ,因此数据保存在WebView的 IndexedDb 中,该WebView放入缓存文件夹。

一个典型的解决方案是用Cordova Plugin into SQLite.

保存
  

在本地应用程序上下文中运行时,存储将优先使用   SQLite,因为它是最稳定且使用最广泛的基于文件的文件之一   数据库,并避免了诸如本地存储之类的某些陷阱   和IndexedDB,例如操作系统决定以较低的价格清除此类数据   磁盘空间情况。

我的问题现在是,我无法控制Firebase Web SDK将数据保存在何处。

所以我正在考虑以下替代方案:

获取用户令牌并将其保存在SQLite中(首选方式)

我可以掌握refreshToken,但是显然除了实现自己的Login Mechanism

之外,别无它法

备份IndexedDb

我考虑过在用户登录后“备份” IndexedDb中的数据,并在必要时在App启动时将其还原,但这并不像使用localstorage那样容易。 (似乎是解决方法here

创建了一个可以处理此问题的库,但依赖它似乎有点诡异:https://github.com/Polarisation/indexeddb-export-import

覆盖IndexedDb的窗口API以写入SQLite:

好像是一个庞大的任务

所以我想知道我现在能做什么。

感谢您的任何建议!

版本信息:

x^5

科尔多瓦:

Firebase: 4.12.1
angularfire2: 5.0.0-rc.4
Angular: 5.2.10
ionic-angular": 3.9.2

0 个答案:

没有答案