2016-03-26 9 views
2

Ich muss die Benutzerproofzeit in meinem aktuellen Projekt einrichten. Ich habe eine Menge verschiedener Fragen dazu gefunden, aber keine, die die Antwort zu haben scheinen, nach der ich suche. Dies sind die Fragen, die ich in so weit ausgesehen haben:Überprüfen Sie, ob die Systemzeit automatisch oder benutzerdefiniert ist.

XCODE: How to get/verify ACCURATE timestamp from device

Is it possible to get the atomic clock timestamp from the iphone GPS?

How can I get the real time in iPhone, not the time set by user in Settings?

Ich habe mehrere Möglichkeiten, um eine Zeit von einem Server-Verbindung, aber ich brauche eine Offline-Lösung haben auch.

1. Es scheint, dass die Verwendung von CLLocation die gleiche Zeit wie die Uhr des Geräts erhält. Ist es weg, um die tatsächliche GPS-Zeit zu erhalten?

2. Ich weiß, dass die Systemzeiteinstellungen keine öffentliche API sind und somit nicht geändert werden können. Ist es möglich, herauszufinden, ob das Gerät die automatische Zeiteinstellung aktiviert hat? Wenn die Autozeit eingeschaltet ist, kann ich mich auf die Systemzeit für meine Zwecke verlassen, und wenn sie ausgeschaltet ist, dann nehme ich das auf, damit ich weiß, dass die aufgezeichnete Zeit nicht vertrauenswürdig ist?

+0

Können Sie nicht die tatsächliche Zeit, mit dem GPS-Zeitstempel oder NTP, und verwenden Sie diese anstelle der Systemzeit (ich nehme an, Sie möchten ein zeitbasiertes Testsystem implementieren und es für den Benutzer schwer machen zu machen betrügen)? – trojanfoe

+0

Ich erstelle tatsächlich benutzergenerierte Ereignisse, die mit einer externen Zeitquelle aufgezeichnet werden müssen, sodass Änderungen an der Systemzeit keine Auswirkungen auf die erstellten Ereignisse haben. Zeit von GPS zu bekommen wäre in Ordnung, da ich keine Internetverbindung brauche, aber die Verwendung von location.timestamp gibt genau die gleiche Zeit wie die Systemuhr. Ich habe die Systemuhr Tage vor und zurück geändert, aber location.timestamp ändert sich damit. Gibt es einen besseren/richtigen Weg GPS-Zeit zu bekommen? – joffd

Antwort

0

Ich wollte nur meine Lösung posten, wenn jemand anderes das gleiche Problem hat.

Nach vielen Recherchen fand ich, dass es nicht möglich war, die Zeit für die GPS-Einstellung zu bestimmen.

Diese Lösung ist nicht perfekt und in Echtzeit aber funktioniert für meinen Zweck.

Ich habe jedes Mal, wenn die App online geht, eine Zeitprüfung mit der Cloud-Zeit implementiert. Wenn das Gerät eine Serververbindung wieder herstellt, um offline erzeugte Ereignisse zu synchronisieren, habe ich eine Verifizierung vorgenommen, die die letzte Zeit des Objektgeräts und die Zeit des neuen Objektgeräts nimmt und die verstrichene Zeit zwischen den beiden Werten berechnet. (Verwenden Sie NSdates, so dass die Sommerzeit abgedeckt ist), machen Sie dasselbe mit der letzten verfügbaren Serverzeit und der letzten Serverzeit. Ich vergleiche dann die Ergebnisse und wenn sie nicht innerhalb meiner Fehlerspanne liegen, werden die Ereignisse als ungültig markiert.

Hoffnung, die Sinn macht und für andere hilfreich ist.

Verwandte Themen