gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 11:25:41 35 4
gpt4 key购买 nike

我想使用 AWS AppSync 进行移动开发 (Android/iOS),但我不确定它的离线功能。

根据文档,数据将在离线时访问,并在客户端再次在线时自动同步。但是在使用 AppSync 创建和修改离线数据之前,我找不到任何关于应用程序客户端是否需要先连接到 AWS 的信息。

我不熟悉 AppSync 的底层技术(例如 GraphQL),也无法访问公共(public)预览版来自行测试。

我想让对隐私敏感的用户能够在不连接到 AWS 的情况下使用应用程序,同时仍然能够将 AppSync 用作离线数据库。只有当用户后来决定跨设备使用备份/同步数据时,他或她才可以选择连接到 AWS。

AWS AppSync 是否可以使用此用例?

不使用任何其他本地存储(如 SharedPreferences、SQLite、Realm 等)

最佳答案

它应该可以通过 Firestore、AWS AppSync 或您自己的后端解决方案实现。无论您使用何种方法,您都可以控制何时开始在线保存/同步内容。

您需要在设计此应用时处理所有这些问题。建议的方法

让我们以简单的ToDo 应用为例

  • 我会让用户在应用中添加和保存待办事项

  • 所有这些数据都将保存在磁盘上(使用 SQLLITE、Preferences 或 File 等)

  • 如果用户清除数据或重新安装应用程序,所有这些数据都会丢失
  • 如果用户想要付费,我会让他将此数据与我的后端解决方案(上述任何一种解决方案)同步

示例 使用 Android 共享首选项作为本地存储

的实现
public void saveLocalTodo(String title, String details) {
ArrayList<Todo> todos;
Todo todo = new Todo(title, details);
String listOfTodo = sharedPreference.getString(TODOS_LIST, null);
if (listOfTodo == null)
todos = new ArrayList<Todo>();
else
todos = gson.fromJson(listOfTodo, new TypeToken<ArrayList<Todo>>() {
}.getType());

//save at 0th position, recent should always come first
todos.add(0, todo);
sharedPreference.edit().putString(TODOS_LIST, gson.toJson(todos)).apply();
}

public ArrayList<Todo> getLocalTodos() {
ArrayList<Todo> todos;
String listOfTodos = sharedPreference.getString(TODOS_LIST, null);
if (listOfTodos == null)
todos = new ArrayList<Todo>();
else
todos = gson.fromJson(listOfTodos, new TypeToken<ArrayList<Todo>>() {
}.getType());
return todos;
}

public void saveOnBackend() {
// Connect to Backend solution

// Get all local todos from preference
// Save all at once in batches

//OR

// Get all local todos from preference
// Save one by one
}

关于android - 是否可以使用 AWS AppSync 构建离线优先的移动应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713306/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com