Ich schreibe eine Zeiterfassung App und es funktioniert perfekt im Simulator. Ich drücke um 9:00 Uhr, sperre den Bildschirm, komme um 9:05 zurück und der Timer wird auf 5 Minuten eingestellt. Auf meinem eigentlichen Gerät passiert jedoch nichts im Hintergrund. Was verursacht das?
Hier ist mein Code für den Hintergrundmodus. Ich habe auch den Hintergrundmodus in den Zielfunktionen aktiviert.iOS App funktioniert im Hintergrundmodus im Simulator, aber nicht im Gerät?
Suchen Sie im Hintergrundmodus nach dem Datum, um zu berechnen, wie lange es im Hintergrund war.
Sobald aus dem Hintergrund geladen, berechnen Sie, wie lange es im Hintergrund war und zeigen Sie das an.
func appLoadedFromBackground() {
if isActivityPaused == false {
let passedSecondsTillInactive =
NSDate().timeIntervalSinceDate(quitDate!)
passedSeconds += Int(passedSecondsTillInactive)
}
}
In die Historie speichern. Es funktioniert nicht im Simulator, wenn ich startDate = nil und choosenActivity = nil ausschließe.
func saveActivityToHistory() {
CoreDataHandler.sharedInstance.saveHistory(choosenActivity!.name!,
startDate: startDate!, endDate: NSDate(), duration: passedSeconds)
startDate = nil
choosenActivity = nil
passedSeconds = 0
loadCoreDataEntities()
}
Das ist schon was ich mache. Nach dem Beenden der App dauert es die Zeit des Ausgangs. Nach der Eingabe berechnet es die Zeit, die es im Hintergrund war und aktualisiert das Etikett. Mein Hauptanliegen ist, warum es auf meinem Gerät nicht funktioniert, obwohl es auf dem Simulator funktioniert. Ich habe den Hintergrundmodus hinzugefügt, weil ich ihn als Lösung für eine ähnliche Frage gesehen habe, aber im Hintergrundmodus passiert nichts. – Sammy
Ich vermute, dass Sie die Hintergrundzeit in und iVar (quitDate) speichern. Diese Variable bleibt nicht bestehen, sobald die App beendet wurde. Mein Vorschlag war, den Wert von quitDate auf andere Weise zu erhalten. Speichern in Core Data oder NSUserDefaults standardUserdefaults. –