为 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 的 Android 聊天应用程序,但未在 firebase 中存储数据