2016-10-11 1 views
1

Ich arbeite an einer Geofence-basierten iOS-Anwendung und ich würde wissen, wann der Benutzer mehr als 5 Minuten in einem Ort bleibt. Jetzt ist der Geofence-Teil bereits fertig und funktioniert, ich bekomme die "Enter" - und "Exit" -Ereignisse, aber ich möchte einige Methoden 5 Minuten nach meiner Eingabe in einem geofenced Bereich ausführen, wenn ich es nicht belasse.Wie kann ich eine Methode nach n Minuten ausführen, in der ich ein Geofence-Ereignis in iOS erhalten habe?

Das Hauptproblem hier ist, dass NSTimers nicht mit der App geschlossen funktioniert und ich weiß nicht, wie Sie dies konzentrieren.

Irgendwelche Ideen?

Vielen Dank für Ihre Zeit!

S.: CLVisit-Klasse ist in diesem Fall nicht gültig, da die Ereignisse für diese Klasse nicht "in Echtzeit" sind und wir kein Zeitfenster festlegen können.

+0

Versuchen Sie eine Benachrichtigung einrichten? – zcui93

+0

Ich versuche es zu tun, ohne eine Backend-Aufgabe zu verwenden. Weil in einer Zukunft zu denken, wenn viele Leute es verwenden, hat es keinen Sinn, eine Menge Benachrichtigungen zu planen, um dies zu wissen. Aber ich behalte es im Hinterkopf;) – Mellao

Antwort

1

Sie NSTimer verwenden können, wenn Sie Ihre App aktiv ist wie folgt:

let timer = NSTimer(timeInterval: 1.0, target: self, selector: #selector(self.printStr), userInfo: nil, repeats: true) 
NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes) 

und auch wenn Ihre Anwendung Ereignis tat erhalten, können Sie das aktuelle Datum speichern userDefaults zB auf und es, nachdem der Benutzer ausführen, um die Anwendung zu verwenden nochmal. Ein anderer Weg ist, UILocalNotification zu verwenden, nachdem Sie AppWillTerminate Ereignis erhalten haben, sollten Sie die UILocalNotificaiton planen und es nach 5 Minuten auslösen.

Hoffe es hilft Ihnen

+1

NSTimer wird nicht im Hintergrund arbeiten – Paulw11

+0

Sie haben Recht, Antwort behoben. Danke – kamwysoc

+0

Ja, das Problem hier ist, dass ich nur "verfolgen" möchte, wenn der Benutzer> = 5 Minuten bleibt. Ich möchte keine lokale Benachrichtigung anzeigen, und wie ich weiß, gibt es keine lokalen stillen Benachrichtigungen. – Mellao

Verwandte Themen