Swift, wie zu verwenden NSTimer hintergrund?
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func update() {
println("Something cool")
}
}
Es ist ok für den Simulator ,ich werde permanent "Etwas cool" durch, ich tippte auf die home-Taste. Aber es funktionierte, wenn ich Debuggen Sie die app mit meinem iPhone. Ich habe nicht alles bekommen, wenn ich tippte auf die home-Taste und stellen Sie meine app im hintergrund laufen.
Jemand hat mir gesagt ich kann spielen lange leer, Musik zu machen, die meine App im hintergrund laufen.Aber ich weiß nicht, wie Sie zu spielen Sie Musik im hintergrund mit swift @matt
InformationsquelleAutor | 2015-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
beginBackgroundTaskWithExpirationHandler
erhalten Sie einige hintergrund-Ausführung.Swift 3.0
Dieser code wurde inspiriert durch diese Antwort, aber ich portiert swift.
Diese scheinbar läuft nur für 3 Minuten auf iOS 7+.
getrimmt im Beispiel-code unten ein bisschen.
jemand hat mir gesagt ich kann spielen lange leer, Musik zu machen, die meine App im hintergrund laufen.Aber ich weiß nicht, wie Sie zu spielen Sie Musik im hintergrund mit swift @mediachicken
Vielleicht ist es Zeit, die Sie Schritt zurück und Fragen Sie Ihren selbst, wenn das wirklich der beste Ansatz. Es scheint wie ein ziemlich hacky-Methode. Was genau wollen Sie erreichen?
Ugh. So lassen Sie sich nicht der Benutzer die Wiedergabe von Musik auf Ihrem Gerät, während die app im hintergrund ausgeführt wird? Lol. Und Apple genehmigt eine app für "Musik" im hintergrund-Modus, obwohl es nicht die Musik spielen?!?
InformationsquelleAutor garetmckinley
Ich bin bereit zu Wetten, dass Sie nicht brauchen, um ausführen ein timer im hintergrund, was Sie brauchen, ist zu wissen, die Zeit, die verstrichen, während Sie ausgesetzt wurden. Das ist eine viel bessere Verwendung Ihrer Ressourcen, als zu versuchen, zu spielen, eine leere sound-Datei.
Verwenden
applicationWillResignActive
undapplicationDidBecomeActive
zu bestimmen, wie viel Zeit verstrichen ist. Speichern Sie zuerst die fireDate für den timer und es ungültig ist imapplicationWillResignActive
Als Nächstes bestimmen, wie viel Zeit für den timer in
applicationDidBecomeActive
durch den Vergleich das jetzt mal mit der fireDate Sie gespeichert in derapplicationWillResignActive
nennen:Wenn Sie eine Wiederholung, tun Mathematik, um herauszufinden, wie oft der timer ausgelöst haben, während im hintergrund
InformationsquelleAutor Good Doug
Nein, das ist eine falsche Annahme. Wenn Sie Tippen Sie auf die home-Taste, die Sie tun nicht machen Sie Ihre app im hintergrund laufen. Machen Sie Ihre app auszusetzen in den hintergrund. Ihr code wird nicht ausgeführt, wenn Sie in den hintergrund.
Apps können Besondere Erlaubnis, um im hintergrund laufen, gerade in Hinblick auf die Durchführung von bestimmten Aktivitäten, wie Weiterbildung, um Musik zu spielen oder weiter zu verwenden-Core-Lage. Aber deine app ist keines dieser Dinge, es geht also in den hintergrund und Stoppt.
Dann erfahren Sie, wie zu tun. Ich habe erwähnt, spielen die Musik als einen rechtlichen hintergrund-Aktivität in meiner Antwort.
Ich vermute, dass Ihre app abgelehnt werden können aus dem app store, wenn Sie etwas zu tun. Bitte stattdessen erklären, was es ist, dass Sie glauben, Sie brauchen, um im hintergrund? Standardmäßig wird eine angehaltene app ist nicht etwas, das der Nutzer interessiert sich in diesem moment. Es sollte in der Lage sein, das zu tun, was es braucht, um, wenn der Benutzer beginnt, mit es wieder.
angenommen, ich brauche keine location oder Musik. ich möchte nur wissen, server, dass meine app im hintergrund läuft continuesly also, wie kann ich tun, ich will einfach nur, um webservice-Aufruf alle 10 Sek., wenn app ist im hintergrund-Modus
InformationsquelleAutor matt
fügen Sie diesen code in appdelegate für eine Aufgabe auszuführen, die im hintergrund Ihre Arbeit fein,
InformationsquelleAutor Vimal Christina