Wie können Sie feststellen, ob das iPhone gesperrt wird?

9

In meiner App muss nach einem Passwort gefragt werden, wenn seit der letzten Eingabe des Passwortes mehr als 60 Minuten verstrichen sind oder wenn der Nutzer nach dem Sperren des Geräts die App aufruft.

Das Problem besteht darin, zu wissen, wann das Gerät gesperrt wird. Wenn der Benutzer gerade zwischen Anwendungen wechselt, muss die App nicht nach einem Kennwort fragen, es sei denn, es sind 60 Minuten seit der letzten Kennwortabfrage vergangen. Wenn sie das Gerät sperren, wird erneut aufgefordert, selbst wenn es weniger als 60 Minuten war.

Benachrichtigungen wie applicationWillResignAktiv helfen nicht, da ich nicht feststellen kann, ob die App aufgrund des gesperrten Geräts oder des Wechsels zu einer anderen App nicht mehr aktiv ist.

>

Bei der Suche habe ich Artikel gefunden, die sagen, dass ich mich registrieren kann, um die UIApplicationProtectedDataWillBecomeUnavailable -Benachrichtigung zu beobachten.

%Vor%

Wenn ich diese Benachrichtigung erhalte, setze ich ein Flag, um nach dem Passwort des Benutzers zu fragen, wenn die App das nächste Mal aktiv wird. Aber meine Tests haben gezeigt, dass diese Benachrichtigung nicht gesendet wird, es sei denn, das Gerät verfügt über ein Passwort-Setup.

Ich habe Testcode geschrieben, um alle Benachrichtigungen zu beobachten, und ich sehe keine anderen Benachrichtigungen, die anzeigen würden, dass das Gerät gesperrt wird.

Gibt es eine andere Möglichkeit zu wissen, wann das Gerät gesperrt wird?

    
jimmyg 08.01.2012, 03:19
quelle

2 Antworten

2

Diese Frage hat mich fasziniert, also habe ich mich ein bisschen aus Neugier umgeschaut. Während es nicht erscheint, gibt es eine handliche Benachrichtigung gesendet, scheint es eine clevere Hack mit dem Beschleunigungsmesser zu sein. Hier ist ein Link dazu:

Lock Entsperren Ereignisse iphone

    
Ryan Crews 08.01.2012 03:48
quelle
0

Es gibt einen einfacheren Weg - fangen Sie einfach die UIApplicationDidBecomeActiveNotification-Benachrichtigung ab und messen Sie die vergangene Zeit seit dem letzten Fang. Aber es ist erforderlich, den Timer zurückzusetzen, wenn der Benutzer auf die App tippt. Sie können alle Tap-Ereignisse im App-Fenster erfassen. Die Zeit zwischen dem letzten Antippen und UIApplicationDidBecomeActiveNotification gibt Ihnen ein echtes Timeout. Außerdem muss die Zeit zwischen der aktuellen und der letzten UIApplicationDidBecomeActiveNotification überprüft werden - möglicherweise weniger als zwischen der letzten Berührung und UIApplicationDidBecomeActiveNotification.

UIApplicationDidBecomeActiveNotification ausgelöst, wenn:

  1. App startet
  2. App wurde vom Hintergrund wiederhergestellt
  3. App wird entsperrt
  4. Telefonanruf beendet

i.e. Immer wenn die App nach einer Aktion auf dem Bildschirm erscheint.

    
AlexeyVMP 08.01.2012 07:25
quelle

Tags und Links