Подтвердить что ты не робот

Не удалось восстановить яркость при выходе приложения

У меня есть функция в моем приложении (приложение метронома для музыкантов), чтобы сгладить экран, чтобы сэкономить время автономной работы. Чтобы установить яркость, я использую:

[UIScreen mainScreen].brightness = 0.1;

Я сохраняю исходную яркость при запуске приложения в viewDidLoad (...) и сохраняю его для моих настроек по умолчанию.

При изменении представлений в приложении я извлекаю исходную яркость из пользовательских настроек по умолчанию и восстанавливаю вызов:

[UIScreen mainScreen].brightness = originalBrightness;

Это прекрасно работает. У меня есть NSLog (...) сообщения, показывающие исходное значение и т.д., Поэтому механизм работает.

Проблема заключается в том, как восстановить исходную яркость при выходе приложения при нажатии кнопки "Домой".

Я добавил аналогичный код в мои методы делегирования приложения для:

applicationWillResignActive(...)
applicationDidEnterBackground(...)
applicationWillTerminate(...)

У каждого из них есть метод вызова для установки яркости экрана, как и раньше, в представлении с аналогичным NSLog (...) s с отображением исходной яркости... и все это правильно. Я также отлаживал и звонки, чтобы установить яркость, сделаны..., но приложение выходит, а экран устройства все еще находится на нижнем, затемненном уровне.

Наконец, если вы нажмете кнопку "блокировка" сверху, затем нажмите кнопку "Домой", чтобы разбудить ее... яркость правильная.

Мое подозрение в том, что любое действие или событие запускается с моим вызовом, чтобы установить яркость, когда приложение выходит, не проходит, возможно, из-за недопустимого состояния или подобного.

Кроме того, мое приложение настроено на НЕ запускать в фоновом режиме, заданное в info.plist как:

Application does not run in background     YES

Любая помощь будет оценена.

Спасибо!

4b9b3361

Ответ 1

iOS позволяет этому приложению немного времени перед выходом. Вы можете попробовать sleep на долю секунды после установки яркости.

Ответ 2

Если вы внимательно прочитали https://devforums.apple.com/thread/139813, то это говорит о том, что изменения яркости не являются постоянными. Исходная пользовательская яркость возвращается, когда вы нажимаете кнопку блокировки и разблокируете ее снова. Фактически, я должен был восстановить яркость приложения, если пользователь нажимает кнопку блокировки во время работы моего приложения:

- (void)applicationDidBecomeActive:(UIApplication *)application{
    [self setBrightness];
}

Ответ 3

Не так много радости. Обход проблемы заключался в яркости reset на представлении ViewControllerWillDisappear. Не отличное решение, но единственное, что я нашел до сих пор, чтобы работать (это было нарушено в течение многих лет...)