ここで、myAPICall()
メソッドは別のメソッドを呼び出しCOStatusAPI()
ています。つまり、5 秒ごとに最大 90 秒です。
これCOStatusAPI()
が API 呼び出しです。つまり、5 秒ごとにサーバーにアクセスしています。応答として、 COStatus を 1 または 0 として取得します。
COStatus を 1 として取得した場合、タイマーを停止して別の viewController に移動し、COStatus を 0 として 90 秒間取得した場合。タイマーを停止してアラートを表示しています。
しかし、ここで私の問題はタイマーが停止していないことです。のように、COStatus を 1 として取得すると、バックグラウンドでタイマーが実行されています。したがって、90 秒後に警告メッセージが表示されます。
同様に90秒まで。COStatus を 0 として取得している場合は、アラートが表示されていることを意味します。この警告は繰り返されます。
これを達成する方法は?誰でもこれで私を助けてくれますか
var myTimer : Timer?
var timeController : Bool = true
func myAPICall(){
self.loadingview()
if self.myTimer == nil {
self.myTimer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(self.COStatusAPI), userInfo: nil, repeats: self.timeController)
}
}
@objc func COStatusAPI(){
if COStatus == 0{
self.timeController = true
let when = DispatchTime.now() + 90
DispatchQueue.main.asyncAfter(deadline: when) {
self.timeController = false
if self.acceptOrRejectTimer != nil {
self.acceptOrRejectTimer!.invalidate()
self.acceptOrRejectTimer = nil
}
self.hideloadingView()
//showing alert
}
}
if COStatus == 1{
self.timeController = false
if self.acceptOrRejectTimer != nil {
self.acceptOrRejectTimer!.invalidate()
self.acceptOrRejectTimer = nil
}
self.hideloadingview()
//navigating to next view controller
}
}