2009-05-22 9 views
5

Questa domanda sembra essere l'essenza di molti altri su questo forum. Credo che sia possibile per l'applicazione iPhone attiva continuare a funzionare, e in particolare, continuare a ricevere le richiamate del timer, dopo che è entrato nello stato inattivo (tramite il timer di inattività che ha attivato il blocco dello schermo o l'utente che sta premendo il pulsante di blocco dell'hardware).Chiamate NSTimer mentre l'applicazione iPhone non è attiva

La documentazione dice esplicitamente che mentre un'applicazione è inattiva, sta eseguendo, ma non invia eventi in entrata (non sto dando un collegamento perché sono nervoso per la NDA - dovrei rilassarmi? una violazione? sospiro).

Inoltre, due risposte dall'utente "Ambr Str" indicano direttamente che è possibile continuare a ricevere le richiamate del timer e fornisce uno snip di codice per raggiungerlo (non posso collegarmi a questo perché sono un nuovo utente, mi dispiace - cerca la domanda: "Che cosa succede a un'app per iPhone quando l'iPhone entra in modalità stand-by?" per trovare la sua risposta).

Ho cercato di creare le mie richiamate come suggerisce, ma una volta che la mia domanda diventa inattiva, i richiami di chiamata cessano di funzionare.

Ho appena notato che mentre l'iPhone è collegato, se l'applicazione diventa inattiva (a causa di un periodo di inattività o quando si preme il pulsante di sospensione), i richiami continuano a verificarsi - forse dovrei ottenere i miei utenti portare con sé un pacco batteria ;-)

risposta

2

C'è una buona risposta a questa domanda sui forum di Apple. Cerca "Timer" ed "Eskimo" (il simpaticone che fornisce le risposte).

In breve, poco dopo che l'applicazione diventa inattiva, il telefono entra effettivamente in modalità di sospensione. L'unico modo per evitare che ciò avvenga è la riproduzione di audio (o la riproduzione di audio in un'applicazione in background). Durante la riproduzione dell'audio, il telefono non dorme e l'applicazione continua a essere eseguita.

Si suggerisce che l'ascolto di audio attivo sia un trucco e che non si dovrebbe farlo se possibile. Penso che nella mia applicazione (che esegue la riproduzione audio intervallata da periodi di silenzio), l'approccio è valido, se non ideale!

+1

L'aiuto di UIApplication.idleTimerDisabled non funziona o non funziona quando l'utente preme manualmente il pulsante di sospensione? –

+1

Come suggerisci, UIApplication.idleTimerDisabled non funziona se l'utente preme il pulsante di sospensione, ma c'è di più rispetto a questo ... UIApplication.idleTimerDisabled è ottimo se si desidera interrompere l'applicazione che entra nello stato inattivo quando il dispositivo non è interagito con. È appropriato per un gioco. Nel mio caso, desidero in particolare che l'applicazione diventi inattiva (poiché desidero riservare la potenza del dispositivo se possibile). Inoltre, voglio consentire all'utente di bloccare il dispositivo in modo tale che l'input non venga ricevuto. –

+0

Un'implementazione compatibile con iOS 5 è disponibile su https://github.com/mruegenberg/MMPDeepSleepPreventer – mrueg

0

Ho un'app. che include un server web incorporato. Sto progettando di offrire un'opzione per disabilitare l'IFF di sospensione automatica quando il server è acceso, E il dispositivo è acceso. Quindi potresti considerare di controllare la proprietà batteryState di UIDevice. Quindi, se batteryState! = UIDeviceBatteryStateUnplugged, andare avanti e disattivare il timer di inattività. (nota: i documenti dicono che UIDeviceBatteryStateUnknown verrà restituito quando ci si trova nel simulatore.)

Inoltre, è necessario ascoltare le notifiche UIDeviceBatteryStateUnplugged e impostare batteryMonitoringEnabled in modo appropriato.

Problemi correlati