[Swift] iOS-App: Einstellungen nach Standby beibehalten

uburoi

Lt. Commander
Registriert
Aug. 2008
Beiträge
1.409
Hallo zusammen!

Ich bin noch ganz frisch dabei, mich ein bisschen in die Programmierung unter Mac OS bzw. für iOS einzuarbeiten. Von daher Entschuldigung vorweg, wenn die Frage blöd sein sollte...

Vorhin habe ich mir mit XCode eine kleine App erstellt, die mehrere Buttons enthält, mit denen ich die Bildschirmhelligkeit jeweils auf einen bestimmten Prozentwert setzen kann. So weit klappt das auch ohne Probleme.
Wenn ich aber das Display ausschalte und dann wieder entsperre, ist die zuletzt gewählte Einstellung offenbar verloren, denn der Bildschirm stellt sich dann wieder auf eine andere Helligkeit. (Das Verhalten zeigt sich unabhängig davon, ob Autohelligkeit in den Einstellungen ein- oder ausgeschaltet ist.) Gibt es eine Möglichkeit, die Einstellung der App auch über den Standby hinweg beizubehalten?

Gruß Jens
 
Es gibt die NSUserDefaults damit kannst du werte Speichern und wieder abrufen. Denn Start der App bekommst du im AppDelegate mit. Von da aus kannst du die gespeicherten Werte abrufen und deinen jeweiligen Controller mitteilen.
 
Danke für den Hinweis! Ich habe es hinbekommen, den jeweiligen Controller einen Wert in den NSUserDefaults speichern zu lassen und diesen dann im AppDelegate abzurufen. Das war eine gute Übung -- löst aber leider mein Problem nicht.
Dass die Helligkeit erhalten bleibt, wenn ich die App "beende" -- also mit dem Home-Button wegklicke --, war auch schon vorher ohne Speicherung der Werte unproblematisch. Erst wenn ich das Display aus- und dann wieder einschalte, ist der Helligkeitswert ein anderer. Offenbar überschreibt iOS den von mir per App eingestellten Helligkeitswert beim Standby.
Ich müsste es also hinbekommen, wenn ich das richtig sehe, dass die App beim Aufwachen des Geräts im Hintergrund aktiviert wird -- wobei ich nicht weiß, ob das überhaupt geht, da ich beim Googeln festgestellt habe, dass Apps nur mit einigen Einschränkungen im Hintergrund arbeiten können. Und dafür fehlt mir bisher eine Lösung ...

Übrigens habe ich mir aus dem App Store mal eine kostenlose App heruntergeladen, die ebenfalls die Helligkeit des Displays regelt, und hier tritt das gleiche Problem auf. Möglicherweise lässt sich das auch gar nicht hinbekommen?

Gruß Jens
 
Ich lese mir das heute Abend mal in Ruhe durch. Vorerst bleibe ich aber noch skeptisch, ob mir das weiterhilft, denn mit dem Ein- und Ausschalten des Displays ändere ich ja den Systemzustand, aber nicht zwangsläufig den Aktivitätsstatus der App, womit AppDelegate wirkungslos wäre -- oder sehe ich das völlig falsch?

Gruß Jens
Ergänzung ()

Gerade habe ich in der Dokumentation zur UIScreen-Klasse folgenden Hinweis gefunden:

"Brightness changes made by an app remain in effect until the device is locked, regardless of whether the app is closed. The system brightness (which the user can set in Settings or Control Center) is restored the next time the display is turned on."

Damit dürfte sich meine Frage wohl erledigt haben. Ein bisschen ärgert es mich aber, dass das System hier mauert (auch wenn mir natürlich vorher klar war, dass iOS nicht so offen ist wie Android) ... :/

Gruß Jens
 
Zuletzt bearbeitet:
Ich würde versuchen das System zu überlisten. Über die oben genannten Methoden teilen dir ja mit, wenn das System aus dem Hintergrund zurückkehrt. Dann würde ich ein Timer starten von 1-2 Sekunden. Bis dahin sollten die Systemprozesse hoffentlich abgeschlossen sein. Am ende des Timers startest du das Einstellen der Displayhelligkeit.

Ich weis nicht, ob es eine Delegatemethode gibt, welche dir die Änderung der Displayhelligkeit mitteilt. Dieses könntest du ev. auch als Trigger verwenden, sollte es so etwas geben.
 
AntiUser schrieb:
Über die oben genannten Methoden teilen dir ja mit, wenn das System aus dem Hintergrund zurückkehrt.
Das wäre die Frage, ob und wie meine App im Suspend-Mode mitbekommt, dass der Systemzustand sich ändert. Momentan entzieht sich das meiner Kenntnis...

Gruß Jens
 
Zurück
Oben