2012-01-09 6 views
8

Abbiamo creato la nostra app orientata alla musica in html5 e javascript con Sencha touch. Per la distribuzione lo abbiamo avvolto in xcode con UIwebView. Tutto funziona bene tranne una cosa che non funziona: riproduzione audio in modalità multitask.Continua a riprodurre l'audio dal player html5 in modalità background iOS

Conosco l'idea generale: aggiungi UIBackgroundModes in info.plist.

Fatto. Ora possiamo riprodurre l'audio anche in modalità background.

Fino a raggiungere la fine della canzone. Per iniziare il brano successivo dobbiamo riportare l'app in primo piano o possiamo premere il pulsante play o "next song" sul controller audio dell'iPhone.

Dopo alcune ricerche ho trovato una soluzione promettente a: "Entering background on iOS4 to play audio" dove la soluzione alternativa è modificare AVAudioSessionCategoryPlayback e lavorare con UIBackgroundTaskIdentifier. Il problema per me è (proprio come in qualsiasi altra correzione che ho trovato finora) che tali soluzioni presuppongono sempre che l'audio venga riprodotto sia con AVaudioPlayer o MPMusicPlayerController. Ma nel mio caso nessuno dei due, il nostro audio è riprodotto dal nostro player html5 avvolto in UIwebView.

Qualcuno ha qualche consiglio su come continuare a riprodurre l'audio in modalità multitask di iOS quando il lettore audio è un lettore html5/javascript?

risposta

1

Grazie, ragazzi, ma alla fine ho semplicemente tenuto l'app occupata in un loop quando in modalità background. Questo è stato sufficiente per colmare il tempo quando ci si collega al brano successivo nella playlist. Il codice che ho usato è simile a questo: iPhone - Backgrounding to poll for events

4

La mia app riproduce audio tramite un tag <audio> in html ospitato in UIWebView e supporta la riproduzione in background.

Come suggerito, è necessario che la modalità di sfondo 'App riproduce audio' definita nel plist.

Prova ad aggiungere questo alla tua applicationDidFinishLaunching: gestore:

NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError]; 
0

Si potrebbe provare this, l'aggiunta di una funzione sull'evento onend.

Problemi correlati