Firebase和定时器';s、 根据经过的时间更改权限
我已经在我的iPhone应用程序中创建了一个登录和注册页面,链接到firebase Auth。我还有一个视图控制器,人们可以在其中提交文本。我想知道是否有一种方法可以在用户首次提交时启动24小时计时器,以便当计时器达到0时,用户能够再次提交 我猜您正在使用一个按钮来提交该文本,因此每次您的用户单击该按钮时,都会向您的Firebase数据库发送一个调用,并检查上次发布的时间戳,如果该时间戳早于24小时,则允许用户提交该文本,否则 第一次保存文本Firebase和定时器';s、 根据经过的时间更改权限,firebase,swift2,xcode7,nstimer,firebase-authentication,Firebase,Swift2,Xcode7,Nstimer,Firebase Authentication,我已经在我的iPhone应用程序中创建了一个登录和注册页面,链接到firebase Auth。我还有一个视图控制器,人们可以在其中提交文本。我想知道是否有一种方法可以在用户首次提交时启动24小时计时器,以便当计时器达到0时,用户能够再次提交 我猜您正在使用一个按钮来提交该文本,因此每次您的用户单击该按钮时,都会向您的Firebase数据库发送一个调用,并检查上次发布的时间戳,如果该时间戳早于24小时,则允许用户提交该文本,否则 第一次保存文本 FIRDatabase.database().ref
FIRDatabase.database().reference().child(FIRAuth.auth()!.currentUser!.uid).child("lastPostedText").setValue(["text" : "This is the text", "timeStamp " : Int(NSDate.timeIntervalSinceReferenceDate*1000)])
在每次单击按钮时检索数据
FIRDatabase.database().reference().child(FIRAuth.auth()!.currentUser!.uid).child("lastPostedText").observeSingleEventOfType(.Value, withBlock : {(snapshot) in
if snapshot.exists(){
if snapDict = snapshot.value as? [String:AnyObject]{
let timeSince = snapDict["timeStamp"] as! Double
// Check the timeSince against NSDate, if it has been more than 24 hours then let him post the text else show him an alert t
}
}else{
//User hasn't submitted even a single text yet
FIRDatabase.database().reference().child(FIRAuth.auth()!.currentUser!.uid).child("lastPostedText").setValue(["text" : "This is the text", "timeStamp " : NSDate.timeIntervalSinceReferenceDate])
}
)}
snapDict看起来像这样:-
lastPostedText:{
text : ...,
timeStamp : 1234234556
}
要查找当前日期和时间戳之间的差异,请参见以下答案:-
并将时间戳转换为NSDate,只需:-
var date = NSDate(timeIntervalSinceReferenceDate: timestamp)
要了解时间戳和当前日期时间戳之间的时间间隔,请查找:首先感谢您的回答@Dravidian,尽管我对它有一些问题,包括-什么是snapDict以及如何检查用户是否在24小时前发布过!