2016-10-22 4 views
1

Я создал страницу входа и регистрации в моем приложении iPhone, связанном с firebase-Auth. У меня также есть контроллер просмотра, где люди могут отправлять текст. Я хочу знать, есть ли способ запустить 24-часовой таймер, когда пользователь впервые отправил его, когда таймер достигнет 0, пользователь может снова отправить его.Firebase и таймер, Изменение разрешений на основе времени

ответ

2

Что я предполагаю, так это то, что вы используете кнопку для отправки этого текста. Поэтому каждый раз, когда ваш пользователь нажимает на эту кнопку, отправляйте звонок в свою базу данных 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 

    } 

Для нахождения разницы между вашим CurrentDate и метку времени увидеть этот ответ: - https://stackoverflow.com/a/27184261/6297658

и преобразование TIMESTAMP в NSDate, просто : -

var date = NSDate(timeIntervalSinceReferenceDate: timestamp) 

Чтобы узнать время, прошедшее между моментом времени и текущей меткой даты, выполните следующие действия: This answer

+0

Во-первых, спасибо за ваш ответ @Dravidian, хотя у меня есть некоторые проблемы с ним, в том числе: Что такое snapDict и как я могу проверить, есть ли у пользователя отправлено 24 часа назад! – Sam

Смежные вопросы