Як запобігти затемненню або вимкненню екрана iPhone під час роботи моєї програми?


114

Я працюю над додатком, який не потребує введення користувача, але я не хочу, щоб iPhone перейшов у режим енергозбереження.

Чи можна відключити економію енергії з програми?


7
Що стосується судження в усіх останніх питаннях? Мені це здається вагомим питанням.
Ерік Шкуновер

Відповіді:


172

Ціль-С

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

Швидкий

UIApplication.shared.isIdleTimerDisabled = true

2
Чи має значення, де використовується цей рядок коду? Чи має бути воно в AppDelegate чи головному контролері програми?

16
Це залежить від того, як ви маєте намір використовувати його. Можливо, у вашій заявці є лише одне уявлення, яке ви не хочете прослуховувати. У цьому випадку ви використовуєте його в цьому контролері перегляду (коли з'явиться подання). Щоб знову ввімкнути таймер, який ви використовували б тоді, [[UIApplication sharedApplication] setIdleTimerDisabled:NO];коли подання зникає.
Ліам Джордж Бетсворт

2
Чи потрібно додатку повторно включити таймер, коли програма втратила фокус, або це автоматично обробляється ОС?
Стен Джеймс

5
Стен - коли додаток подає у відставку активний, ОС знову ввімкне режим очікування, вам не потрібно дзвонити[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
Кріс Стрінгер

ІМХО, це не має ніякої різниці від того, де ти це називаєш. Це завжди весь хіт додатка, і кожен вид зберігається на екрані, а не затемнений.
декади



2

Я поклав цей рядок коду в свій контролер перегляду, але ми все ще отримуємо від клієнтів, які говорять про те, що екран буде тьмяним або вимкненим, поки хтось не торкнеться екрана. Я бачив інші пости, де ви не тільки налаштовані програмно

UIApplication.sharedApplication().idleTimerDisabled = true 

до істини, але спочатку потрібно відновити його до помилки

UIApplication.sharedApplication().idleTimerDisabled = false
UIApplication.sharedApplication().idleTimerDisabled = true

На жаль, це все ще не спрацювало, і клієнти все ще отримують тьмяні екрани. У нас є профіль Apple Configurator, який заважає пристрою переходити до сну, і все-таки екран деяких пристроїв затуманюється, і замовник повинен натиснути домашню кнопку, щоб розбудити екран. Тепер я вкладаю цей код у таймер, який спрацьовує кожні 2,5 години, щоб скинути непрацюючий таймер, сподіваємось, це спрацює.


1
На жаль, введення коду у функцію, яка запускається на таймері, не усунула проблему. Я залишав свій iPad увімкненим понад 24 години, і він не затуманився і не було взаємодії. За словами одного з наших клієнтів, користувач використовував пристрій за 15 хв до цього, а потім пристрій затуманився.
JMStudios.jrichardson

У мене така ж проблема: у мене є контролер перегляду, де я встановив idelTimerDisabled = true (додаток повинен залишатися відкритим протягом ночі, будильник), і більшість часу він працює, але іноді додаток перебуває у фоновому режимі десь протягом ночі. Хтось має уявлення, що може перемістити додаток на другий план? чи скинути прапор?
Ярів Адам

Так, ви можете скинути прапор, і я це теж робив. У мене це було і в функції. Виявляється, це було "процесом маршрутизації" на нашому сервері MDM, що надсилає пінг на наші пристрої, щоб затемнити екрани. дуже дратує
JMStudios.jrichardson

0

У нас було те саме питання. На нашому сервері MDM виявився шахрайський процес, видалений з нашого облікового запису, але на сервері все ще надсилалася команда, щоб затемнити наші пристрої.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.