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

Ste*_*fen 9 android amazon-web-services ios amazon-dynamodb aws-appsync

我想将AWS AppSync用于移动开发(Android/iOS),但我不确定其离线功能.

根据文档,数据将在脱机时访问,并在客户端再次联机时自动同步.但在使用AppSync创建和修改脱机数据之前,我无法找到有关应用客户端是否需要首先连接到AWS的任何信息.

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

我希望隐私敏感用户能够在不连接到AWS的情况下使用应用程序,同时仍然可以将AppSync用作脱机数据库.只有当用户以后决定在设备上使用备份/同步数据时,他或她才可以选择加入AWS.

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

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

Akh*_*hil 1

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

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

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

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

  • 所有这些数据都将保存在磁盘上(使用 SQLLITE、首选项或文件等)

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

使用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
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回复。但我想知道 AWS AppSync 的本地缓存是否可以在不需要任何其他本地存储的情况下工作(即使用户尚未登录)。 (3认同)