无法从iOS中的firebase获取时间戳?

时间:2017-12-01 10:21:33

标签: swift firebase

我想从Firebase获取当前的UTC时间戳。我从设备获得UTC时间戳,但我改变了这种方法,以便用户不使用电话时间&使用无法更改的Firebase时间。

我使用下面的代码,但它不会返回我的时间戳。

 print("server value \(FIRServerValue.timestamp())") 

它给我的价值为[AnyHashable(".sv"): timestamp]

我也试过这个

 let objectToSave = ["date": [".sv": "timestamp"]]
        print("timestamp \(objectToSave)")

现在我有两个问题:

  • 使用Firebase时间是否很好,以便用户无法更改 设备的时间?
  • 如何获得时间戳的价值?

1 个答案:

答案 0 :(得分:0)

所以,我将把答案分成两部分来匹配你的两个问题:

•这是一个好方法吗?

这取决于您的应用程序的功能以及您希望它如何工作。例如,对于一个游戏,你可能有一个功能,玩家应该等一个小时才能再次玩,它实际上是击败用户的唯一解决方案"作弊"通过转发其设备的时钟。但是,如果您的应用程序是消息传递应用程序或其他任何东西,您可以有两种方法:(1)您不关心什么是实时,因为您的代码可以对任何情况作出反应(将来的日期或类似的情况)那个),(2)你认为它会让你的app运行更顺畅,因为你可以防止边缘情况发生,在这种情况下,你应该得到实时。

您可以考虑的另一个例子是Apple自己的应用程序。我玩了很多MacBook的内部时间,用Xcode和iOS模拟器测试我自己应用程序未来或过去的事件。我意识到Xcode甚至Finder都是基于Mac告诉他们的时间。所以我最终得到了两个月内创建的文件和Xcode日志。

•如何获取时间戳值?

您似乎没有正确访问FIRServerValue.timeStamp()。 Firebase文档说它返回如下:private void button1_Click(object sender, EventArgs e) { string[] userdetails = File.ReadAllLines(AppDomain.CurrentDomain.BaseDirectory + "UserDetails.txt"); bool usernameFound = false; foreach (string user in userdetails) { string[] splitDetails = user.Split(':'); Login.username = splitDetails[0]; Login.password = splitDetails[1]; label1.Text = Login.username; label2.Text = Login.password; if (txtUsername.Text == Login.username) { if (txtPassword.Text == Login.Password) { MessageBox.Show("Welcome " + Login.username); this.Hide(); frmMainMenu menu = new frmMainMenu(); menu.Show(); return; // we're done here, so return instead of break } usernameFound = true; break; // we're not gonna find this username again, so might as well quit the loop } } //we only get there if the credentials were incorrect //so we check if the username was found, if yes, the //password was incorrect, if not, the username was string message = String.Empty; if (usernameFound) message = "Password"; else message = "Username"; message += " incorrect"; MessageBox.Show(message); //or shorten the above 7 lines with a ternary operator //MessageBox.Show((usernameFound ? "Password" : "Username") + " incorrect"); } 。为了操纵你从Firebase获得的结果,我建议你查看这两个类似的帖子来更详细地处理这个问题:

Trying to convert Firebase timestamp to NSDate in Swift

Swift 4: Firebase Timestamp