Come posso evitare che lo schermo dell'iPhone si oscuri o si spenga mentre la mia applicazione è in esecuzione?


114

Sto lavorando su un'app che non richiede input da parte dell'utente, ma non voglio che l'iPhone entri in modalità di risparmio energetico.

È possibile disabilitare il risparmio energetico da un'app?


7
A cosa servono i voti negativi su tutte le domande recenti? Questa mi sembra una domanda valida.
Eric Schoonover

Risposte:


172

Objective-C

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

veloce

UIApplication.shared.isIdleTimerDisabled = true

2
È importante dove viene utilizzata questa riga di codice? Dovrebbe essere in AppDelegate o nel viewcontroller principale dell'app?

16
Dipende da come intendi usarlo. Potresti avere solo una vista di cui non vuoi il timeout nella tua applicazione. In questo caso lo useresti in quel controller di visualizzazione (quando viene visualizzata la visualizzazione). Per riattivare il timer da utilizzare [[UIApplication sharedApplication] setIdleTimerDisabled:NO];quando la visualizzazione scompare.
Liam George Betsworth

2
L'app deve riattivare il timer quando l'app ha perso il focus o viene gestita automaticamente dal sistema operativo?
Stan James,

5
Stan - quando l'app si dimette attiva, il sistema operativo riattiverà la modalità inattiva, non è necessario chiamare[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
Chris Stringer

IMHO non fa differenza da dove lo chiami. Viene sempre visualizzata l'intera app e ogni visualizzazione viene mantenuta sullo schermo, non oscurata.
decenni

20

In swift puoi usare questo come

UIApplication.sharedApplication().idleTimerDisabled = true


2

Ho inserito questa riga di codice nel mio controller di visualizzazione, ma i clienti continuano a dire che lo schermo si oscura o si spegne finché qualcuno non tocca lo schermo. Ho visto altri post in cui non solo si imposta programmaticamente

UIApplication.sharedApplication().idleTimerDisabled = true 

su true ma è necessario prima ripristinarlo su false

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

Purtroppo questo ancora non ha funzionato e i clienti continuano a ricevere schermi oscurati. Abbiamo il profilo di Apple Configurator che impedisce al dispositivo di andare in stop, e lo schermo di alcuni dispositivi si oscura e il cliente deve premere il pulsante Home per riattivarlo. Ora inserisco questo codice in un timer che si attiva ogni 2,5 ore per ripristinare il timer di inattività, si spera che funzioni.


1
Purtroppo l'inserimento del codice in una funzione che si attiva con un timer non ha risolto il problema. Ho lasciato il mio iPad acceso per oltre 24 ore e non si è oscurato e non ha interagito. Secondo uno dei nostri clienti, un utente ha utilizzato il dispositivo 15 minuti prima e poi il dispositivo si è oscurato.
JMStudios.jrichardson

Ho lo stesso problema: ho un controller di visualizzazione in cui ho impostato idelTimerDisabled = true (l'app dovrebbe rimanere aperta tutta la notte, una sveglia) e la maggior parte delle volte funziona, ma a volte l'app è in background qualche volta durante la notte. Qualcuno ha idea di cosa potrebbe spostare l'app in background? o resettare la bandiera?
Yariv Adam

Sì, potresti resettare la bandiera e stavo facendo anche quello. Avevo anche questo in una funzione. Si è scoperto che era un "processo rouge" sul nostro server MDM che inviava ping ai nostri dispositivi per oscurare gli schermi. molto noioso.
JMStudios.jrichardson

0

Abbiamo avuto lo stesso problema. Si è rivelato essere un processo canaglia sul nostro server MDM che è stato eliminato nel nostro account ma sul server stava ancora inviando il comando per oscurare i nostri dispositivi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.