Можно ли с помощью AWS AppSync создавать мобильные приложения, ориентированные прежде всего на офлайн?

Я хотел бы использовать AWS AppSync для разработки мобильных приложений (Android / iOS), но не уверен в его автономных возможностях.

Согласно документации, данные будут доступны в автономном режиме и автоматически синхронизируются, если клиент снова подключится к сети. Но я не могу найти никакой информации о том, нужно ли клиенту приложения сначала подключиться к AWS, прежде чем использовать AppSync для создания и изменения автономных данных.

Я не знаком с технологиями, лежащими в основе AppSync (например, GraphQL), и у меня нет доступа к общедоступной предварительной версии, чтобы проверить ее самостоятельно.

Я хотел бы разрешить пользователям, чувствительным к конфиденциальности, использовать приложение без подключения к AWS, но при этом иметь возможность использовать AppSync в качестве автономной базы данных. Только если пользователь позже решит использовать резервное копирование / синхронизацию данных на разных устройствах, он сможет подключиться к AWS.

Возможен ли этот вариант использования с AWS AppSync?

Без использования какого-либо другого локального хранилища (например, SharedPreferences, SQLite, Realm и т. д.)


person Steffen    schedule 08.12.2017    source источник
comment
Можете ли вы поделиться некоторыми ссылками, по которым вы пытаетесь добиться того же? Вы имеете в виду это? docs.microsoft. ru / en-us / azure / app-service-mobile /   -  person Sreehari    schedule 03.01.2018
comment
Спасибо за ссылку. Да, я хотел бы знать, смогу ли я добиться того же (локального магазина) с помощью AWS AppSync.   -  person Steffen    schedule 06.01.2018
comment
Appsync внутренне использует SQLite и хранит все данные в одной таблице. для запросов вы должны использовать в клиенте graphQL вместо ORM на основе SQL / SQL.   -  person srisaiswaroop    schedule 02.08.2018


Ответы (3)


Это должно быть возможно с Firestore, AWS AppSync или вашим собственным серверным решением. Любой подход, который вы используете, вы будете контролировать, когда захотите начать сохранять / синхронизировать вещи в Интернете.

Вам нужно справиться со всем этим при разработке этого приложения. Предлагаемый подход

Возьмем пример простого приложения ToDo.

  • Я позволю пользователю добавлять и сохранять Todos в приложении

  • Все эти данные будут сохранены на диске (с использованием 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
}
person Akhil    schedule 06.01.2018
comment
Спасибо за ваш ответ. Но мне было интересно, будет ли локальный кеш AWS AppSync работать без необходимости в каком-либо другом локальном хранилище (даже если пользователь еще не вошел в систему). - person Steffen; 07.01.2018
comment
Пример приложения AWS Appsync работает без входа в систему и хранит данные в локальном sqlite в нормализованной форме. Прочтите сообщение на форуме AWS здесь forum.aws.amazon.com/thread .jspa? threadID = 286304 & tstart = 0 - person srisaiswaroop; 02.08.2018

Используйте базу данных Realm для управления всеми офлайн- и онлайн-данными и сохраните их при удалении приложения.

person Mirza Adil    schedule 07.01.2018

вы можете прочитать https://docs.aws.amazon.com/appsync/latest/devguide/building-a-client-app-reactnative.html.

AWS AppSync поддерживает автономный режим, и вы можете использовать базу данных для своего приложения.

person Mostafa Pirhayati    schedule 08.01.2018