检测 iOS 上的亮度变化是用户操作还是自动操作

2024-01-02

我发现我可以通过注册为观察者来检测屏幕亮度的变化UIScreenBrightnessDidChangeNotification

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(brightnessDidChange:) name:UIScreenBrightnessDidChangeNotification object:nil];
}

-(void) brightnessDidChange:(NSNotification*)notification
{
    NSLog(@"Brightness did change");
}

通知的对象属性是UIScreen object.

我试图找到一个属性,让我知道该操作是用户生成的还是 iOS 生成的自动更改。这对我的应用程序很重要,因为这两种情况都应该区别对待。我在文档中没有找到任何与此相关的内容。任何帮助将不胜感激。


如果用户改变亮度,他们会从控制中心或从Settings应用程序。您可以根据以下内容检测甚至区分这两者UIApplicationDelegate通知(当你的应用程序将去Inactive控制中心被打开,并进入背景当用户打开时Settings).

如果您收到UIScreenBrightnessDidChangeNotification而你的应用程序是Active,您可以确定这是系统触发的自动更改。

当然,当您的应用程序运行时,也可能会发生自动更改Inactive or 背景也指出了这一点,但也许基于此的启发式解决方案总比没有好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测 iOS 上的亮度变化是用户操作还是自动操作 的相关文章

随机推荐