我目前正在使用Firebase和AngularFire构建一个Angular 1.x应用程序作为我的后端/服务器。 由于应用程序/网站针对移动设备进行了优化,并且当您将其添加到主页时非常适合作为应用程序使用,我想知道即使手机处于离线状态,如何让用户使用它。
在网上搜索时,我发现Firebase为Android Java的同行提供了keepSynced(true),但是我无法为js找到这样的选项。 然后我使用HTML5的localStorage和基于上次更改时间的同步进行手动方法,但由于我使用了一些AngularFire的方便命令(例如$ save),我的大多数代码都被破坏了。
有什么建议吗?
答案 0 :(得分:2)
使用$provide.decorator
angular docs
$ provide.decorator的一个很好的用例是当你需要对你的模块所依赖的某些第三方/上游服务进行轻微的“调整”,同时保持服务的完整性(因为你不是所有者/服务的维护者)stackoverflow question。
基本上你可以检查装饰器里面是否navigator.onLine === true
(或使用任何其他方法来检测对firebase的请求是否会失败)然后根据你的需要覆盖angularFire的一些方法(写入localStorage而不是发送实际的angularFire请求)
这是example使用带有装饰器的angularfire覆盖$add
方法
答案 1 :(得分:1)
手动维护一个功能齐全的离线外壳应用程序可能是一个非常棘手的道路,但有几种方法可以克服这个问题,你可以尝试使用kinvey,检查页面我认为它正是什么你正在寻找。
另一种方法是使用indexedDB而不是localStorage,并根据您的连接状态选择保存操作的目标,只需谷歌搜索有关同步离线html5 indexedDB的信息,您就可以找到很多资源。 我希望这有助于你