Wie mache ich meine App läuft einen NSTimer in den hintergrund?
Ich mache ein benchmark-App NUR für Testzwecke. Ich bin nicht die Absicht haben, diese zu gehen, um den App Store.
Was ich brauche, ist meine NSTimer weiterhin läuft, auf dem hintergrund mit einem UIBackgroundTaskIdentifier, speichern von Daten in einem zentralen Daten-db, und schließlich schieben Sie die Daten auf einem server (ich bin mit Parse), nach einem bestimmten Zeitintervall, natürlich.
Also im Grunde, ich habe keine gefunden Fragen, die für meinen konkreten Fall. Ich meine NSTimer etwa so:
UIBackgroundTaskIdentifier bgTask;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
self.timer = [NSTimer scheduledTimerWithTimeInterval:self.localInterval target:self selector:@selector(updateCoreData:) userInfo:nil repeats:YES];
die Methode updateCoreData ruft einfach die Core-Daten-Klasse und macht die notwendigen Einfügungen.
Ich gelesen habe über VoIP und die Musik spielt, Teil, wissen aber nicht genau, welche man anwenden würde, am besten für meinen Fall, noch wie man diese umsetzen kann.
Sind Sie erfolgreich, dies zu tun? Ich habe die gleiche Aufgabe und ich versuche so hart, aber noch nicht erfolgreich........Können Sie mir helfen?
Ja, ich habe es geschafft, es zu machen. Um die NSTimers Arbeit im hintergrund, den code, den ich zur Verfügung gestellt arbeitet. Was passiert ist, nach 10 Minuten oder so inaktiv, wird die app beendet. Um dies zu verhindern, verwendete ich die Ortungsdienste statt VoIP, da ist es nur einfacher zu implementieren. Ich drehte die Flagge auf der Info.plist-Datei, dann machte ich einen timer, der gestartet wird die location services, und stoppte Sie sofort alle 9 Minuten. Es funktionierte wie ein Charme 😉 Wenn Sie brauchen, ein Beispiel-code, lassen Sie es mich wissen.
Ja, bitte senden Sie mir code....Ich es wirklich brauchen....Ich bin mit dieser Arbeit mehr als einen Monat...
überprüfen Sie heraus meine Antwort für die Frage 😉
InformationsquelleAutor LilDwarf | 2012-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden, indem ich mich, für sonst niemanden mit einem ähnlichen problem, was ich Tat, war, schalten Sie zunächst auf die Standort-update-flag für deine Info.plist-Datei. Um dies zu tun, müssen Sie die Taste namens "Required Background Modes" auf Xcode 4, dann als einen Wert, wählen Sie "App registriert für "location updates"
Ich habe einen timer deklariert wie in meinem .h-Datei:
Dann auf die .m-Datei, ich erklärte es so:
Schließlich auf die selector-Methode, die ich aus dem folgenden:
Dadurch wird ein timer startet und Stoppt sofort die Ortungsdienste nach 5 Minuten. Das wird genug sein für die app am Leben zu bleiben indefinately, es sei denn, Sie töten den Prozess.
ja, Sie können denselben code verwenden, aber statt 300 in der timeinterval, legte 900 (900 Sekunden = 15 min). Diese führen die startLocationServices () - Methode alle 15 Minuten, aktiviert den locationManager. Für Ihren Fall empfehle ich das entfernen der Zeile [locationManager stopUpdatingLocation] und ersetzt Sie, nachdem Sie die Ausführung von code aus der locationManagerDelegate
Wow, das ist ein schrecklicher Missbrauch der location services-Befreiung für hintergrund-Prozesse. Ich bin überrascht, es funktioniert sogar, ich hätte gedacht, dass das anhalten Standort Dienstleistungen auszusetzen Ihre app. In jedem Fall ist dies etwas sollte Recht bekommen, Ihre app abgelehnt, die aus dem store.
Geld! beste und konzentrierteste Lösung dafür habe ich noch nicht gesehen
Oh... nicht genau. Wenn es auch gerechtfertigt ist, kann vorgelegt bekommen. Sie können gehen Sie vor und senden Sie es und es wird Sie abgelehnt, können Sie Ihre Gründe für das tun und lassen können was Sie falsch gemacht haben (wenn es sich um diese spezielle Lösung).
InformationsquelleAutor LilDwarf
XCode 6.3.1, für iOS 8.3
Gibt es große diffrences, die ich angetroffen habe, die zwischen den apps. Verhalten, während Sie eingesteckt in Ihrem Mac unter XCode mit debugger und die gleichen apps. Verhalten während unplugged.
Zur aktuellen iOS-version 8.3, bei den meisten Ihrer app zugeteilt, 180 Sekunden im hintergrund ausgeführt werden für die finite-lange laufende Aufgabe mit einem Ablauf-handler.
Egal, was Sie versuchen, mit Ihrem Handy unplugged Ihre app wird getötet werden durch das system in 180 Sekunden oder früher. Ich habe erhebliche Mengen von tests und tricks, um dies zu bestätigen. Siehe mein Beitrag...
Meine NSTimer Post
Hier ist eine nette Möglichkeit zu sagen, wie viel Zeit gelassen wird für Ihre app ausgeführt wird, bevor die Kündigung im Auge behalten, dass Sie nicht unbedingt das Zeit.
Hoffe, das hilft Ihrer Untersuchung. Prost!
InformationsquelleAutor serge-k