I've seen that I can detect changes in screen brightness by registering as an observer for UIScreenBrightnessDidChangeNotification
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(brightnessDidChange:) name:UIScreenBrightnessDidChangeNotification object:nil];
}
-(void) brightnessDidChange:(NSNotification*)notification
{
NSLog(@"Brightness did change");
}
The object property of the notification is a UIScreen
object.
I've tried to find a property that lets me know if the action was user generated or if it was an automatic change produced by iOS. This is important for my app since both situations should be treated differently. I did not find anything about this in the documentation. Any help will be appreciated.
If the user changes the brightness, they'd do it from the Control Center or from the Settings app. You could detect and even differentiate between these two based on UIApplicationDelegate
notifications (as your app will go Inactive for when Control Center is opened, and into Background when the user opens Settings).
If you receive UIScreenBrightnessDidChangeNotification
whilst your app is Active, you can be sure it was an automatic change triggered by the system.
Of course an automatic change could also happen whilst your app is in Inactive or Background states too, but maybe a heuristic solution based on this is better than nothing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With