После того, как вы запустили процесс OTP, вам нужно создать 60-секундный таймер, который по истечении срока его действия запускает метод селектора:
создать свойство таймера уровня класса:
var otpTimer: Timer?
создайте таймер при нажатии кнопки reg *
@IBAction func regButn(_ sender: Any) {
registerService()
startTimer()
}
func startTimer() {
optTimer?.invalidate(). //cancels it if already running
optTimer = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(timerDidFire(_:)), userInfo: userInfo, repeats: false)
}
Когда ваш таймер достигнет нуля, будет вызван селектор, и вы можете сделать все, что захотите, чтобы закончить запрос otp
@objc func timerDidFire(_ timer: Timer) {
// timer has completed. Do whatever you want...
}
если нажать кнопку повторной отправки, я думаю, что вы хотите перезапустить таймер, так что ...
@IBAction func resendOtpButn(_ sender: Any) {
registerService()
startTimer()
}
Возможно, вы также захотите отменить таймер, если ваш otp завершится успешно, так что в вашем успехеобработчик завершения вы можете просто сделать
self.optTimer?.invalidate()