2012-03-28 13 views
38

La seguente riga di codice impedisce all'applicazione di bloccare automaticamente lo schermo dopo un certo periodo di inattività.Disabilita blocco schermo automatico su iOS 5.1

[UIApplication sharedApplication].idleTimerDisabled = YES; //write this in applicationDidFinishLaunching 

Funziona bene fino a iOS 5.0. Ma iOS 5.1 non rispetta questa linea e blocca lo schermo dopo un certo periodo di inattività. Come risolvere questo problema irritante?

Grazie.

Edit:

Lo stesso codice funziona bene quando la sua installata nel dispositivo 5.0.1. Ma non so perché non funziona con il dispositivo 5.1.

+2

che suona come un insetto. Se ti piace segnalare bug -> http://bugreport.apple.com/ –

+0

Dove stai chiamando questo codice? Sei sicuro che sia stato eseguito (hai impostato un breakpoint e controllato)? L'esempio di Apple è di mettere 'application.idleTimerDisabled = YES;' nel 'applicationDidFinishLaunching' del delegato –

+0

Sì @NickBull ho messo il codice solo all'interno di applicationDidFinishLaunching. Ma come puoi vedere, lo stesso codice funziona bene quando è installato nel dispositivo 5.0.1. – Selvin

risposta

24

Proprio impostazione [UIApplication sharedApplication].idleTimerDisabled = YES; in

- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 

funziona bene per me. Tuttavia, vi è un avvertimento. Ho notato che ogni volta che invoco l'utilità della fotocamera per scattare un'istantanea, idleTimerDisable viene impostato su NO dietro la scena. Così, subito dopo a caricare la mia immagine, ho dovuto chiamare la seguente riga di codice ancora:

[UIApplication sharedApplication].idleTimerDisabled = YES; 

non sarei sorpreso se ci sono più posti che richiedono tutta stessa strategia. Finora questo approccio ha funzionato senza problemi per me.

+1

Non ho davvero bisogno di idleTimerDisabled = YES nell'intera app. È possibile impostare [[UIApplication sharedApplication] setIdleTimerDisabled: YES]; dove il codice lo richiede e disattiva la proprietà quando non è più necessario con [[Applicazione condivisa UIA] setIdleTimerDisabled: NO]; –

3

Importante: Si dovrebbe impostare questa proprietà solo se necessario e dovrebbe essere sicuri di reimpostare su No quando il bisogno non esiste più. La maggior parte delle applicazioni devono lasciare che il sistema spenga lo schermo quando scade il timer di inattività . Questo include applicazioni audio. Con l'uso appropriato di Audio Session Services, la riproduzione e la registrazione procedere ininterrottamente quando lo schermo si spegne. Le uniche applicazioni che dovrebbero disattivare il timer di inattività sono la mappatura di applicazioni, giochi o programmi simili con simili con interazione sporadica dell'utente.

Forse si supera il limite di tempo consentito di essere sveglio?

+0

La mia applicazione è sicuramente una con sporadica interazione con l'utente;) ma vedere il codice funziona in 5.0.1 senza alcun problema. Ciò è strano. – Selvin

0

Funziona bene se l'applicazione è registrata per qualche attività in background, ad esempio l'aggiornamento della posizione GPS.

24
[[UIApplication sharedApplication] setIdleTimerDisabled: YES]; 

lavorato per me su iOS 5.1

1

So che la sua è vecchio, ma ho trovato questo bene e nel Swift si può fare apparire una come questo

application.idleTimerDisabled = true

grazie per voi le risposte!io uso questo momento Xcode 7 Beta 3 (Swift 2)

+0

Swift 3: 'application.isIdleTimerDisabled = true' – Crashalot

0

Per Swift, Io lo uso per fare fuori delegato:

UIApplication.sharedApplication().idleTimerDisabled = true 
Problemi correlati