Внедряете таймер обратного отсчета на стороне сервера Firebase для Android?

Есть ли способ реализовать таймер обратного отсчета на стороне сервера Firebase в Android Studio?

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

Я прочитал ответы на этот вопрос, но они 2+ лет, и с тех пор Firebase сильно изменилась. Он был приобретен Google в октябре 2014 года, а в мае 2016 года на Google I/O было представлено значительное количество новых функций.

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


person Me123    schedule 14.01.2017    source источник


Ответы (2)


У меня нет лучшей идеи для обратного отсчета, который рассчитывается только на стороне клиента.

Что произойдет, если вы сделаете это:

  1. Получить время сервера в метке времени (добавить в переменную srvTime)

Создайте новую запись для таймера обратного отсчета:

  1. Время начала: srvTime
  2. Время окончания: например, Time in ms when countdown ended (5 мин = 60000*5)

И вы можете рассчитать на стороне клиента.

Или создайте прослушиватель для ServerValue.TIMESTAMP

ref.addValueEventListener(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(dataSnapshot.getValue()); 
    }

    public void onCancelled(DatabaseError databaseError) { }
});
ref.setValue(ServerValue.TIMESTAMP);
person vihkat    schedule 14.01.2017

Создайте таймер на стороне сервера, который обновляет значение в вашей базе данных в реальном времени.

Firebase ref = new Firebase('/firebase/database/url/time');
    new AnimationTimer(){
        start(){...}
        stop(){...}
        handle(){...ref.addValue(time);}
        };

Это будет обновлять вашу базу данных в реальном времени каждую миллисекунду. Чтобы увидеть его в своем приложении, просто вызовите его.

Firebase ref = new Firebase('/firebase/database/url/time/value')

        ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot ds) {
            Platform.runLater(() -> {
            label.setText(ds.getValue() + "");
        });
        }

        @Override
        public void onCancelled(FirebaseError fe) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

    });

Он будет обновляться в режиме реального времени в вашем приложении за миллисекунды. Я смог запустить это на Java

person Mathew Cross    schedule 30.01.2017
comment
Это мой первый ответ на с.о. поэтому, пожалуйста, дайте мне знать, как я могу улучшить свой ответ. - person Mathew Cross; 31.01.2017
comment
Не могли бы вы привести пример того, в каком формате вы бы передавали даты внутри start() {...} и stop(){...} ? - person Adry; 20.09.2017
comment
Обратите внимание, что firestore взимает плату за количество операций чтения и записи. Делать это с помощью firestore будет очень дорогостоящей идеей. - person Bhaskar; 14.06.2020