私は時間追跡アプリを書いていますが、シミュレーターで完全に動作します。9:00 にスタートを押し、画面をロックし、9:05 に戻ってくると、タイマーが 5 分に調整されます。ただし、実際のデバイスでは、バックグラウンドで何も起こりません。何が原因ですか?
これがバックグラウンドモードの私のコードです。また、ターゲット機能でバックグラウンド モードをオンにしました。
バックグラウンド モードに入るときは、日付を見つけて、バックグラウンドであった時間を計算します。
func appGoesIntoBackground() {
if isActivityPaused == false {
quitDate = NSDate()
}
}
バックグラウンドからロードされたら、バックグラウンドにあった時間を計算して表示します。
func appLoadedFromBackground() {
if isActivityPaused == false {
let passedSecondsTillInactive =
NSDate().timeIntervalSinceDate(quitDate!)
passedSeconds += Int(passedSecondsTillInactive)
}
}
履歴に保存します。startDate = nil と choosenActivity = nil を切り取ると、シミュレーターでは機能しません。
func saveActivityToHistory() {
CoreDataHandler.sharedInstance.saveHistory(choosenActivity!.name!,
startDate: startDate!, endDate: NSDate(), duration: passedSeconds)
startDate = nil
choosenActivity = nil
passedSeconds = 0
loadCoreDataEntities()
}