Firebase和定时器';s、 根据经过的时间更改权限

Firebase和定时器';s、 根据经过的时间更改权限,firebase,swift2,xcode7,nstimer,firebase-authentication,Firebase,Swift2,Xcode7,Nstimer,Firebase Authentication,我已经在我的iPhone应用程序中创建了一个登录和注册页面,链接到firebase Auth。我还有一个视图控制器,人们可以在其中提交文本。我想知道是否有一种方法可以在用户首次提交时启动24小时计时器,以便当计时器达到0时,用户能够再次提交 我猜您正在使用一个按钮来提交该文本,因此每次您的用户单击该按钮时,都会向您的Firebase数据库发送一个调用,并检查上次发布的时间戳,如果该时间戳早于24小时,则允许用户提交该文本,否则 第一次保存文本 FIRDatabase.database().ref

我已经在我的iPhone应用程序中创建了一个登录和注册页面,链接到firebase Auth。我还有一个视图控制器,人们可以在其中提交文本。我想知道是否有一种方法可以在用户首次提交时启动24小时计时器,以便当计时器达到0时,用户能够再次提交

我猜您正在使用一个按钮来提交该文本,因此每次您的用户单击该按钮时,都会向您的Firebase数据库发送一个调用,并检查上次发布的时间戳,如果该时间戳早于24小时,则允许用户提交该文本,否则

第一次保存文本

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小时前发布过!