我可以使用 AppSync 预先缓存数据以在移动应用程序中离线工作吗?

Posted

技术标签:

【中文标题】我可以使用 AppSync 预先缓存数据以在移动应用程序中离线工作吗?【英文标题】:Can I pre-cache data to work offline in mobile app using AppSync? 【发布时间】:2019-11-07 18:09:45 【问题描述】:

我正在开发一个 androidios 应用程序,该应用程序可用于数据连接非常差或没有数据连接的区域。应用程序需要预先加载所有数据,以便即使应用程序从未与服务器通信也能正常工作,但它还需要能够在建立连接时进行更新和同步。是否可以在启动和查询时手动填充 AppSync (Apollo) 缓存数据库并在以后对其进行变异?该应用程序还包含几个搜索和过滤查询。我们的后端 API 目前正在使用 GraphQL。

我已经看到了这个问题,Is it possible to build offline-first mobile apps using AWS AppSync?,但这与我所问的有点不同。

【问题讨论】:

【参考方案1】:

建议在安装后对本地 SQLite 数据库进行水合(阅读:预加载数据)。 SQLite 是“本地缓存”用来在设备上保存数据的。

有关如何执行此操作的代码示例,请参阅此 github 问题: https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/160

【讨论】:

谢谢,但我将使用原生 Android 和 iOS SDK。我没有像在 js SDK 中那样在客户端上看到 hydrate 或 restore 方法。我想看看我是否可以只使用 Apollo 的内部 SQLite db 进行缓存而不是创建我自己的,这似乎是重复的数据。由于该应用程序包含几个不可缓存的查询,例如搜索查询,因此管理我自己的缓存数据库可能是唯一的方法。也许我错过了什么? @Mark 你解决过这个问题吗?我也在考虑将 appsync 用于主要离线的应用 @JosephDevlin 我最终只使用带有预加载数据的本地 SQLite 数据库。我使用 AppSync 获取新数据以更新数据库并直接在数据库中查询数据。 @Mark 非常感谢您在这么久之后回答我的问题。我希望你不介意我再问你一个。您是否遇到过让您的 sqlite 数据库和 appsync 离线商店不同步的问题? @JosephDevlin 没问题!我对所有东西都使用 SQLite 数据库,而不是使用 AppSync 离线商店或任何东西,所以只有一个数据源。

以上是关于我可以使用 AppSync 预先缓存数据以在移动应用程序中离线工作吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 AWS AppSync 构建离线优先的移动应用程序?

如何使用订阅和 AWS AppSync 高效同步 Apollo 的缓存

即使禁用离线,AWS AppSync 查询也会返回缓存响应

为 AWS AppSync 客户端 iOS Swift 启用缓存

将 AppSync 连接到现有 RDS 以更改移动应用程序状态

是否可以预填充 AWS AppSync iOS 客户端?