Обновление пользовательского интерфейса для всех пользователей Firebase - PullRequest
0 голосов
/ 26 октября 2018

Итак, сейчас у меня так, что когда пользователь в моей игре создает открытую игру, появляется интерфейс с кнопкой присоединения и некоторой информацией об игре, и это здорово. Я сделал это через RecylclerView, и он работает отлично. Однако это только обновило экран для пользователя, который создал открытую игру.

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

Какую функцию в Firebase я буду использовать, чтобы сделать что-то подобное? Я просто хотел бы начать, и я могу проводить исследования оттуда! Я предполагаю, что Firebase Hosting - это то, что мне нужно использовать, но я просто хотел бы получить несколько советов от вас, ребята.

Спасибо!

1 Ответ

0 голосов
/ 26 октября 2018

Я использую Firebase RealtimeDatabase в нашем многопользовательском режиме, как вы хотите.

Во-первых, вам нужен игрок, чтобы создать игру, это что-то вроде

    roomDB = FirebaseDatabase.getInstance().reference.child("Rooms").child(roomNumber)

и затем установите значение ребенка.

А затем вам нужно, чтобы все в одной игровой комнате listen изменили ссылку на базу данных.

Вы можете выбрать один из них:

roomDB.addChildEventListener(...) чтобы выслушать изменения ребенка.

roomDB.addListenerForSingleValueEvent(...) чтобы получить значение только один раз.

roomDB.addValueEventListener(...) прослушивать его значение до .removeEventListener(...)

Я использую addValueEventListener для синхронизации данных между игроками. Он имеет задержку около 0,5 ~ 1 сек. И не забудьте removeEventListener, когда игра закончится.

В конце концов, к вашему сведению, Возможно, вы захотите увидеть Transaction класс Firebase. Это может обещать вам, игроки не будут записывать данные в одно и то же место в одно и то же время. Например: убедитесь, что в игре на 4 игрока не будет 5 игроков.

--- Обновление -

final DatabaseReference playersDB = FirebaseDatabase.getInstance().getReference()
            .child("Rooms") // end here if you want to listen to all rooms
            .child(roomId)  // end here if you want to listen to THIS room
            .child("Players"); // I end here because I only want players' data
playersDB.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot ds) {
         // update UI here;
         }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...