Как правильно отменить многопользовательский матч в реальном времени?

Как правильно отменить многопользовательский матч в реальном времени, если пользователь отменяет матч на этапе ожидания? В настоящее время нет номера комнаты для вызова leave API.

Сначала создается быстрая игра:

Bundle am = RoomConfig.createAutoMatchCriteria(1, 1, 0);
RoomConfig.Builder roomConfigBuilder = configRoom();
roomConfigBuilder.setAutoMatchCriteria(am);
RoomConfig roomConfig = roomConfigBuilder.build();
Games.RealTimeMultiplayer.create(getApiClient(), roomConfig);

затем onRoomCreated срабатывает и показывается зал ожидания:

Intent i = Games.RealTimeMultiplayer.getWaitingRoomIntent(getApiClient(), room, Integer.MAX_VALUE);
startActivityForResult(i, RC_WAITING_ROOM);

После этого пользователь нажимает назад, отменяя матч. затем onActivityResult срабатывает с RC_WAITING_ROOM а также responseCode == Activity.RESULT_CANCELED,

Проблема в том, что матч все еще там, ждет другого игрока. Если кто-то также запустит быструю игру через 10 минут, игра начнется!

Как очистить его после отмены пользователем?

1 ответ

Решение

onActivityResult дополнительная информация о номере (даже если она отменена):

Room room = intent.getExtras().getParcelable(Multiplayer.EXTRA_ROOM);

Тогда вам просто нужно покинуть комнату:

Games.RealTimeMultiplayer.leave(getApiClient(), this, room.getRoomId());
Другие вопросы по тегам