2015-09-06 12 views
25

Sto costruendo un sistema domotico, ho scelto l'iPad come dispositivo hub/bridge principale per controllare molti dispositivi bluetooth (alcuni realizzati su misura con RFDuino).iOS 8 esegue l'app per sempre o disabilita lo schermo

L'iPad (iOS 8.4.1) è montato a parete e collegato al caricabatterie tutto il tempo.

ho bisogno di scegliere l'approccio giusto per rendere l'applicazione funzionare tutto il tempo per controllare i dispositivi e ricevere gli aggiornamenti, eventi di trigger ecc

La domanda è: C'è un modo per disattivare lo schermo visualmente? Dimming non è abbastanza buono; sarebbe meglio se lo schermo fosse spento, come nello stato del dispositivo bloccato.

In parole semplici, posso utilizzare uno screen saver nero?

Se la risposta di cui sopra è no: esiste un modo per forzare l'esecuzione dell'app in background per sempre?

Una cosa da evidenziare qui. Questa applicazione non va a Apple Store in modo che la soluzione potrebbe essere una soluzione sporca

Grazie in anticipo

testato finora:

let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND,0) 

func applicationDidEnterBackground(application: UIApplication) { 

    application.beginBackgroundTaskWithName("myBgTask", expirationHandler: nil) 
    dispatch_async(self.backgroundQueue, myBackgroundTask) 
} 

func myBackgroundTask() { 
    NSThread.sleepForTimeInterval(1) 
    dispatch_async(self.backgroundQueue, myBackgroundTask) 
} 

Questo approccio mantiene applicazione in esecuzione in background per 3 minuti solo .

continuare a cercare ...

+0

Con "disattivando lo schermo", vuoi per impedire all'utente di utilizzare l'iPad a tutti e non permettere lui/lei a sbloccare il dispositivo? –

+0

No. Tutto quello che voglio è non guardare l'ipad appeso al muro con il suo schermo acceso, ma eseguire ancora la piena funzionalità delle app in background. Dovrebbe funzionare come un tipico screen saver. Su qualsiasi input dovrebbe tornare a vivere, dopo qualche tempo dovrebbe tornare allo stato dello schermo nero –

+0

È migliore opzione per utilizzare tablet Android per questo, perché è molto più personalizzabile – Andrey

risposta

9

provare la soluzione UIApplicationExitsOnSuspend:

Da iOS 4 applicazioni vengono sospesi quando si preme il tasto home. Prima di questo (iOS 3) uscivano e si riavviarono ogni volta che si apriva l'app - tuttavia se non si utilizzava il pulsante home per chiudere l'app ma invece si bloccava il dispositivo con l'app iOS 3 aperta si eseguiva sullo sfondo per sempre. Puoi far funzionare le tue app in questo modo aggiungendo la chiave UIApplicationExitsOnSuspend al tuo info plist, imposta il valore su YES.

Non si è in grado di chiudere e riaprire l'app più velocemente (verrà riavviato ogni volta che si utilizza il tasto home), ma se non si interagisce molto spesso con l'iPad, è possibile bloccare il dispositivo mentre l'app è aperta e continuerà a funzionare fino a quando l'iPad non sarà sbloccato o aprirai un'altra app.

Si noti che questa soluzione è valida per l'App Store, poiché utilizza API Apple ufficiali.

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

+0

Test in corso durante la notte. Sembra promettente. Dita incrociate –

+0

Sembra che abbiamo un vincitore! L'app ha appena superato la soglia di 10 minuti e funziona perfettamente con lo schermo spento. Grazie Signore! Grazie a @Damo per la taglia –

4

Tutte le applicazioni arrivare fino a 10 minuti per finire tutto quello che facevano prima l'applicazione è veramente sospeso. Ma in alcuni casi potrebbe essere necessario eseguire più tempo, ad esempio riprodurre musica o calcolare i passaggi. È possibile utilizzare la modalità di background richiesta. sono le modalità con cui è possibile mantenere l'applicazione in esecuzione per sempre in background.

prega di guardare le immagini qui sotto:

enter image description here enter image description here

Visita l'esecuzione in background: Apple

Visita di sotto URL può essere utile.

https://stackoverflow.com/a/29168981/4101371

http://www.raywenderlich.com/29948/backgrounding-for-ios (per spiegazione con codice di esempio.)

Speranza che aiuta a risolvere il tuo problema.

+0

Ancora studiando le cose di Ray Wenderlich. Testare tutti gli approcci. Al momento può funzionare solo in background per non più di 3 minuti. Ci sono alcuni cambiamenti in iOS 8.4.1 per impedire l'estensione artificiale della vita dell'app –

+1

@CaptJak - Si consiglia di leggere prima la documentazione fornita dalla mela. Se non ci sarà elaborazione in corso, l'applicazione in background verrà chiusa. –

+2

@GregLukosek se l'app suona un po 'di audio, quindi puoi continuare a funzionare in background per sempre. Ad esempio spotify o un'app podcast sono in grado di funzionare a tempo indeterminato in background. Il suono che stai suonando non deve essere effettivamente udibile attraverso gli altoparlanti (basta suonare una traccia silenziosa ripetuta). In questo modo la tua app verrà esclusa dall'App Store, ma per un'app interna funzionerà perfettamente. –

-3

Potresti bypassare/eseguire l'operazione eseguendo il silenzio in background. Non riesco a immaginare che questo sia efficiente o la soluzione migliore, ma potrebbe essere un problema. So che i creatori di Workflow hanno provato a ignorare anche questo e hanno anche raggiunto il limite di 10 minuti. C'è una soluzione alternativa per inviare una notifica locale al contrassegno 9 min e dire all'utente di riaprire l'app in modo che possa continuare a funzionare.

+0

Ciò significa che dovrei letteralmente riattivare l'app ogni 10 minuti. Questa non è affatto una soluzione. –