Ответ 1
iOS позволяет этому приложению немного времени перед выходом. Вы можете попробовать sleep
на долю секунды после установки яркости.
У меня есть функция в моем приложении (приложение метронома для музыкантов), чтобы сгладить экран, чтобы сэкономить время автономной работы. Чтобы установить яркость, я использую:
[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
Любая помощь будет оценена.
Спасибо!
iOS позволяет этому приложению немного времени перед выходом. Вы можете попробовать sleep
на долю секунды после установки яркости.
Если вы внимательно прочитали https://devforums.apple.com/thread/139813, то это говорит о том, что изменения яркости не являются постоянными. Исходная пользовательская яркость возвращается, когда вы нажимаете кнопку блокировки и разблокируете ее снова. Фактически, я должен был восстановить яркость приложения, если пользователь нажимает кнопку блокировки во время работы моего приложения:
- (void)applicationDidBecomeActive:(UIApplication *)application{
[self setBrightness];
}
Не так много радости. Обход проблемы заключался в яркости reset на представлении ViewControllerWillDisappear. Не отличное решение, но единственное, что я нашел до сих пор, чтобы работать (это было нарушено в течение многих лет...)