2017-10-02 9 views
0

私は瞑想アプリに取り組んでいます。このアプリで私は24時間までの時間を選択し、瞑想を行うためのオプションをユーザーに与えています。タイマーはロック画面で3分間正常に動作していますが、3分後には停止しました。Swift3のロック画面でNSTimerが3分以上実行されていませんか?

コードはここにある: - 事前に

 var backgroundTaskIdentifier: UIBackgroundTaskIdentifier? 

    var timer : Timer? 
    var counter : Int! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: { 
     UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!) 
    }) 
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(MainPlayerMindCultivationController.updateTimer), userInfo: nil, repeats: true) 

    } 

func updateTimer() { 
    counter = counter - 1 
    let hours = Int(counter)/3600 
    let minutes = Int(counter)/60 % 60 
    let seconds = Int(counter) % 60 

    timerLabel.fadeTransition(0.4) 
    timerLabel.text = String(format: "%02i:%02i:%02i",hours,minutes,seconds) 

    print("mincounter\(counter)") 

    } 

感謝。

+2

良いアイデアを読むにはhttps://stackoverflow.com/questions/34862160/make-timer-run-on-background-ios-for-more-than-3-minutes – iPatel

答えて

2

タイマーはロック画面で3分間正常に動作していますが、3分後には停止しています。

これはiOSの機能です。あなたのアプリが中断されたときに自分のタイマーを無効にしてから、あなたのアプリが再び起動したときに再起動するはずです。あなたがそれらを自分で停止しない場合でも、実行中のタイマーは、アプリケーションが中断されたときにOSによって無効にされます。

このアプリでは、私は24時間までの時間を選択し、瞑想を行うためのオプションをユーザに与えています。

ローカル通知は、この種のものにとってはるかに優れたツールになります。将来のある時点で通知が行われるようにスケジュール設定することができ、OSは通知をユーザに配信します。通知が配信されると、ユーザーはメッセージが表示され、アプリが現在実行されていなくてもアプリに切り替えることができます。

関連する問題