2

ここで、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
        }

}

4

1 に答える 1