Frage

Ich habe eine App, die mir eine Aktion nach einiger Zeit nehmen erfordert. Zum Beispiel, wenn ein Benutzer in der App in wenigen Wochen nicht gewesen ist, wenn der Benutzer schließlich die App startet, ich habe sie zu bitten, in einem speziellen Code zu setzen, die sie gegeben wurde, wenn sie diese App installiert. (Dies ist eine interne app und ich verpflichtet ist, werde dies zu tun, aufgrund von Sicherheitsbedenken)

Ich bin mit dem [NSDate Datum] Methode das Datum, wenn sich der Benutzer anmeldet und speichern sie in einer Datenbank abzurufen. Ich vergleiche dieses gespeicherte Datum nächstes Mal, wenn sie die App öffnen und sehen, wie lange seine seit ihrer letzten Anmeldung. Das Problem ist, dass [NSDate Datum] die Zeit gibt, die durch die Zeiteinstellungen durchgeführt wird, die manuell durch den Benutzer in der nativen App Einstellungen geändert werden kann. Wie Sie wahrscheinlich sagen kann, führt dies zu viele Probleme zu meiner Situation. Wenn der Benutzer suppose ist der speziellen Code nach 3 Wochen der Untätigkeit gestellt werden, er die App kann dazu führen, um diesen Bildschirm zu zeigen, indem sie die Zeit in den nativen App Einstellungen zu ändern oder noch schlimmer, weg von durch die Zeit zu einem früheren Datum einstellen dass innerhalb von 3 Wochen nach seiner Tätigkeit sein wird.

Gibt es eine Möglichkeit, die „Systemzeit“ anstelle des „user time“ zu bekommen? Ich habe in mach_absolute_time sieht (), aber dies wird zurückgesetzt nach dem Neustart des Gerätes. Da die Zeit der Inaktivität werde ich gegen seinen Vergleich ziemlich groß ist, sind die Chancen Gerät von dann neu gestartet worden wäre. Ich dachte auch, Netzwerkverbindung mit der Zeit von Servern außerhalb der App zu bekommen, aber viele Benutzer haben keinen Zugriff auf Wi-Fi, wo sie ihre iPads verwenden. Das wird meine letzte Ausweg Lösung sein, wenn ich nichts anderes finden kann. Aufgrund ihrer Lage während des Gebrauchs, ich versuche, alles auf dem Gerät selbst zu verwenden.

Bin ich mit Blick auf etwas hier einfach? dies scheint zu einfach einem Problem keine Antwort. Bitte leitet mich nach rechts Richtung. Vielen Dank im Voraus.

War es hilfreich?

Lösung

Warum nicht einen Remote-Server für die Zeit abfragen - vielen NTP-Server über oder nur eine einfache HTTP-Anfrage an einen PHP-Skript auf Ihrem eigenen Server machen. Natürlich, wenn Ihre Anwendung ist wahrscheinlich nie mit dem Internet verbunden wird, dass ein Problem sein könnte, aber wenn Sie eine 3rd-Party-Zeit seine ganz leicht zu erraten, wenn der Benutzer spielt mit der Uhr ist.

Andere Tipps

Wenn dies ein Inhouse-App (so dass Sie nicht durch Apples Genehmigungsverfahren beschränkt sind), könnten Sie Ihre App als tun einige Hintergrund stuff (voip oder Empfangen von Standortaktualisierungen) markieren, so dass die App immer aktiv sein wird und Sie Würd der Lage sein, eine Art von einem ‚nicht verwendete‘ Zähler zu aktualisieren. Voip App wird auch durch das Betriebssystem nach dem Neustart des Geräts neu gestartet werden.

Aber natürlich wird es die Batterie etwas abtropfen lassen.

Entweder: Sprechen Sie die aktuelle Zeit ein wesentliches Merkmal der App haben. Auf diese Weise werden die Benutzer eine Notwendigkeit, die Zeit des Geräts aktuell zu halten und kann 3 Wochen nicht zurück

Oder: der Code als abgelaufen markieren und diese Informationen speichern, bevor die App informiert den Benutzer. Dies wird die meisten Benutzer von der Einstellung der Zeit zurück zu stoppen. sehen die meisten werden versuchen, einmal oder zweimal, dass die App bleibt deaktiviert und wird aufgeben.

Sie kann auch speichert die Zeitstempel der letzten erfolgreichen Ausführung und wenn die mehr als ein angemessener Zeitrahmen in der Zukunft (nicht vergessen, Sommer- / Winterzeit), dann halte es für einen „Hack Versuch“. Legen Sie eine CRC-Prüfung (oder was auch immer obskure Idee, die Sie kommen mit) auf diesem Zeitstempel und speichern Sie es zu, und Sie werden eine große Anzahl von Script-Kiddies zu stoppen.

Sie können nie den eingefleischten Hacker, der für jeden Trick aktiv zu suchen stoppen Sie in die App gesetzt haben könnten. Konzentrieren Sie sich auf den „durchschnittlichen“ Benutzern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top