Restaure a luz de fundo para o nível anterior, iPhone
-
21-09-2019 - |
Pergunta
Eu estava trabalhando no meu aplicativo recentemente e queria mudar o brilho da luz de fundo. Eu então queria restaurar o nível de luz de fundo para sua configuração original para sair do aplicativo. Aqui está o código:
#include "GraphicsServices.h"
- (void) viewWillAppear:(BOOL)animated
{
NSNumber* bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel"), CFSTR("com.apple.springboard")); // To retrieve backlight settings
prevBacklightLevel = [bl floatValue];
GSEventSetBacklightLevel(0.5f);
}
// Other code here...
- (void)applicationWillTerminate
{
GSEventSetBacklightLevel(prevBacklightLevel); // To restore to original level
}
A luz de fundo muda corretamente para carregar o aplicativo, mas quando o usuário sai, a luz de fundo permanece no nível definido pelo aplicativo ... que inconveniente!
Alguém pode me ajudar por que isso não está funcionando como o esperado, estou fazendo algo obviamente errado?
Não consegui encontrar muitas informações na web sobre esse problema.
ViewController.h Requer
#import "GraphicsServices.h"
também.
Editar // Alguém pode ajudar com este problema:
Quando o App é o nível de backlight fechado muda, mas sempre para 0, não importa o que fosse antes da execução do aplicativo. Possivelmente o BL é sempre 0 por algum motivo?
Muito Obrigado,
Stu
Solução
Descobriu a resposta. Foi um erro realmente básico ... erro bobo. Eu tive:
- (void)applicationWillTerminate
em ViewController.m em vez de appdelegate.m
Agora funciona perfeitamente.
Espero que isso ajude alguém por aí com um problema semelhante,
Stu
Outras dicas
Controlar o brilho dentro do aplicativo é uma idéia interessante. No entanto, o uso dessa string será uma causa de rejeição. (Veja o link.)
Bem, ... eu não sei como restaurar o nível após a saída do usuário. Portanto, deixe -me apresentar duas APIs a você. Eles são o caminho no Mac OS X.
CFPreferencesSetAppValue()
e CFPreferencesAppSynchronize()
Se você resolver o problema, anote o código correto para os outros desenvolvedores, inclua -me. ;-)