为 Android 实现 Firebase 服务器端倒数计时器?

Posted

技术标签:

【中文标题】为 Android 实现 Firebase 服务器端倒数计时器?【英文标题】:Implementing a Firebase server-side countdown timer for Android? 【发布时间】:2017-05-29 15:02:36 【问题描述】:

有没有办法在 android Studio 中实现 Firebase 服务器端倒计时?

我希望计时器位于服务器端,这意味着每当用户打开我的应用程序时,所有用户的计数器总是在同一时间。

我阅读了this 问题的答案,但他们已有 2 年以上的历史,Firebase 此后发生了很大变化。它于 2014 年 10 月被 Google 收购,并于 2016 年 5 月在 Google I/O 上展示了大量新功能。

如果 Firebase 无法提供该功能,是否有其他平台可以提供服务器端倒计时?

【问题讨论】:

【参考方案1】:

创建一个服务器端计时器,用于更新实时数据库中的值。

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 中运行

【讨论】:

这是我在 s.o. 上的第一个答案。所以,请告诉我如何改进我的回复。 您能举个例子,说明在 start () ... 和 stop ()... 中传递日期的格式是什么? 请注意,因为 Firestore 会根据读写次数向您收费。用 Firestore 来做这件事是一个非常昂贵的想法。【参考方案2】:

我没有更好的倒计时只在客户端计算的想法。

如果你这样做会发生什么:

    时间戳获取服务器时间(添加到srvTime 变量)

为“倒计时”计时器创建新记录:

    开始时间:srvTime 结束时间:例如Time in ms when countdown ended (5min = 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);

【讨论】:

以上是关于为 Android 实现 Firebase 服务器端倒数计时器?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 与 Android Java 中的 Google 云消息传递

Firebase 推送通知 [重复]

使用 Firebase 的 Android 聊天应用程序,但未在 firebase 中存储数据

Android:从firebase获取当前日期和时间

Java/Android 中的 Firebase:事务被后续集合覆盖

自定义 Firebase 推送通知未显示 Android 通知徽章点