Я использую новую службу AWS AppSync внутри приложения Android с аутентификацией IAM (ключ доступа и секретный ключ), чтобы пользователи могли обмениваться информацией о своих местоположениях в режиме реального времени с помощью Google Map API.
Для этого я создал подписку, которая отлично работает в консоли запросов AppSync.
Но когда я реализовал подписку в своем приложении, она не работает должным образом.
Вот пример использования:
- пользователь Доступ к карте, его местоположение, которое он отправляет в службу AppSync через подписку GraphQL
- пользователь B делает то же самое.
- пользователь А отправляет свое последнее местоположение
- пользователь B получает его, а пользователь A появляется на карте пользователя B
- пользователь 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();
Любая помощь будет оценена.