2014-04-08 6 views
6

Meine iOS-App benötigt die Berechtigung, auf Bilder zuzugreifen, um ordnungsgemäß ausgeführt zu werden.Gibt es eine Möglichkeit zu wissen, dass meine iOS-App durch eine Änderung der Datenschutzeinstellungen getötet wurde?

Ich habe getestet, wie meine App auf Änderungen in den Datenschutzeinstellungen reagierte, als ich Folgendes entdeckte: Jedes Mal, wenn ich zu den Einstellungen-Apps gehe und die Datenschutzeinstellungen für meine App ändere (entweder ein- oder ausschalten) App wird ohne Warnung getötet.

fand ich diese Protokolle in der Konsole meines Geräts:

Apr 8 15:01:50 iPad Preferences[5924] <Warning>: ########### Quitting application (xxx) in response to privacy settings change. 
Apr 8 15:01:50 iPad com.apple.launchd[1] (UIKitApplication:xxx[0xc7cb][6039]) <Notice>: (UIKitApplication:com.edupad.itoochdev[0xc7cb]) Exited: Killed: 9 
Apr 8 15:01:50 iPad backboardd[30] <Warning>: Application 'UIKitApplication:xxx[0xc7cb]' exited abnormally with signal 9: Killed: 9 

Und obwohl ich applicationWillTerminate: in meinen app-Delegaten implementieren, es scheint nicht, bevor die App getötet wird aufgerufen werden.

Ich kann keine relevante Dokumentation darüber finden, was ich implementieren sollte, um eine Benachrichtigung zu erhalten, bevor meine App beendet wird. Irgendeine Idee, wenn ich das lösen kann?

PS 1: Ich weiß, ich könnte applicationDidEnterBackground: implementieren, aber ich möchte eine andere UX in dem Fall (A) der Benutzer nur schnell auf die Einstellung App, um die Datenschutzeinstellungen ändern oder (B) der Benutzer möchte weitergehen und nicht vor einer Weile wieder zur App zurückkehren

PS 2: Wenn Sie diese Art von Dingen testen, tun Sie es nicht mit Ihrer App, die über Xcode gestartet wird, oder Sie stürzen mit einem Sigill.

+0

Sie müssen immer damit rechnen, dass Ihre App nach dem Wechsel in den Hintergrund gelöscht wird. Selbst wenn der Benutzer schnell zu den Datenschutzeinstellungen wechselt, können sich die Nutzer dann an etwas anderes erinnern, zu einer anderen App wechseln und so weiter. Die einzige Möglichkeit, die Sie haben, ist wahrscheinlich zu überprüfen, wie viel Zeit zwischen der Eingabe von Hintergrund und Vordergrund verbracht wurde. – gnasher729

Antwort

0

In den Fällen, in denen Sie den Status speichern oder den Code bereinigen möchten, bevor die App beendet wird, müssen Sie den Block beginBackgroundTaskWithExpirationHandler definieren.

Sie können sich die WWDC 2012-Dokumentation von Apple ansehen, in der Sie erfahren, was passiert, wenn die Datenschutzeinstellungen iOS6 geändert werden. Kurz gesagt, es heißt, dass beginBackgroundTaskWithExpirationHandler aufgerufen wird, bevor ein SIGKILL gesendet wird, damit Sie dort den Code aufräumen können.

Es gibt eine andere Diskussion auf Stack Overflow in den gleichen Zeilen. Es wäre hilfreich, wenn jemand es finden und hier verlinken könnte.

+0

Das scheint in iOS 10 nicht mehr zu stimmen –