Подписки с AWS AppSync с использованием IAM в приложении Android - PullRequest
0 голосов
/ 30 апреля 2018

Я использую новую службу AWS AppSync внутри приложения Android с аутентификацией IAM (ключ доступа и секретный ключ), чтобы пользователи могли обмениваться информацией о своих местоположениях в режиме реального времени с помощью Google Map API. Для этого я создал подписку, которая отлично работает в консоли запросов AppSync. Но когда я реализовал подписку в своем приложении, она не работает должным образом.

Вот пример использования:

  1. пользователь Доступ к карте, его местоположение, которое он отправляет в службу AppSync через подписку GraphQL
  2. пользователь B делает то же самое.
  3. пользователь А отправляет свое последнее местоположение
  4. пользователь B получает его, а пользователь A появляется на карте пользователя B
  5. пользователь B отправляет свое последнее местоположение, но пользователь A никогда не получает его

Если пользователь A выходит из карты и открывает ее снова, подписка GraphQL также открывается, он получает последнее местоположение пользователя B, отправленное после его подписки.

В начале у меня было две подписки GraphQL с аутентификацией по API-ключу, но в режиме реального времени не работало. После удаления только подписки, следуя этому ответу https://stackoverflow.com/a/49242267/4862232, все работает нормально.

Но поскольку я изменил метод аутентификации, у меня возникли проблемы, вот код:

    AWSAppSyncClient client = AWSAppSyncClient.builder()
            .context(context)
            .serverUrl(APPSYNC_ENDPOINT)
            .region(APPSYNC_REGION)
            .credentialsProvider(new StaticCredentialsProvider(new BasicAWSCredentials(APPSYNC_ACCESS_KEY, APPSYNC_SECRET_KEY)))
            .defaultResponseFetcher(AppSyncResponseFetchers.NETWORK_FIRST)
            .build();

Любая помощь будет оценена.

...