2012-01-09 15 views
8

Zbudowaliśmy naszą aplikację muzyczną w HTML5 i javascript za pomocą dotyku Sencha. W celu dystrybucji rozpakowaliśmy go w Xcode za pomocą UIwebView. Wszystko działa dobrze, z wyjątkiem jednej rzeczy, która nie działa: odtwarzanie dźwięku w trybie wielozadaniowym.Kontynuuj odtwarzanie dźwięku z odtwarzacza html5 w trybie tła iOS.

Znam ogólny pomysł: dodaj UIBackgroundModes w info.plist.

Gotowe. Teraz możemy odtwarzać dźwięk nawet w trybie tła.

Dopóki nie dojdziemy do końca utworu. Aby rozpocząć następny utwór, musimy ponownie wprowadzić aplikację na pierwszy plan lub możemy nacisnąć przycisk odtwarzania lub przycisk "następna piosenka" na kontrolerze audio iPhone'a.

Po przeprowadzeniu badań znalazłem obiecujące obejście: "Entering background on iOS4 to play audio", gdzie obejściem jest edycja AVAudioSessionCategoryPlayback i praca z UIBackgroundTaskIdentifier. Problemem dla mnie jest (jak w każdej innej poprawce, jaką znalazłem do tej pory), że te rozwiązania zawsze zakładają, że dźwięk jest odtwarzany za pomocą AVaudioPlayer lub MPMusicPlayerController. Ale w moim przypadku ja też nie, nasz dźwięk odtwarzany jest przez naszego odtwarzacza html5 owiniętego w UIwebView.

Ktoś ma porady, jak dalej odtwarzać dźwięk w trybie wielozadaniowym systemu iOS, gdy odtwarzacz audio jest odtwarzaczem html5/javascript?

Odpowiedz

1

Dzięki, ale skończyłem po prostu utrzymując aplikację zajęty w pętli, gdy w tle tryb. To wystarczyło, aby połączyć czas z następnym utworem na liście odtwarzania. Kod użyłem jest podobny do tego: iPhone - Backgrounding to poll for events

4

Moja aplikacja odtwarza dźwięk za pomocą tagu <audio> w html hostowanym pod numerem UIWebView i obsługuje odtwarzanie w tle.

Zgodnie z sugestią, musisz ustawić tryb tła "App odtwarza dźwięk" w twoim pliście.

warto dodać to do obsługi applicationDidFinishLaunching::

NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError]; 
Powiązane problemy