2012-01-09 20 views
8

Müzik tabanlı uygulamalarımızı html5 ve javascript'te Sencha touch ile oluşturduk. Dağıtım için UIwebView ile xcode'a sardık. Her şey işe yaramıyor bir şey dışında iyi çalışır: multitask modunda ses çalma.iOS arka plan modundayken html5 oynatıcısından ses oynatmaya devam edin

Genel fikri biliyorum: UIBackgroundModes öğesini info.plist dosyasına ekleyin.

Bitti. Artık sesi arka plan modunda bile çalabiliriz.

Şarkının sonuna ulaşana kadar. Bir sonraki şarkıyı başlatmak için uygulamayı tekrar ön plana getirmeliyiz ya da iPhone ses kontrol cihazında 'play' ya da 'next song' düğmesine basabiliriz.

Bazı araştırmalardan sonra, "Entering background on iOS4 to play audio" adresinde gelecek vaat eden bir geçici çözüm buldum; burada geçici çözüm AVAudioSessionCategoryPlayback'i düzenlemek ve UIBackgroundTaskIdentifier ile çalışmak. Benim için sorun (tıpkı bugüne kadar bulduğum başka herhangi bir düzeltmede olduğu gibi), bu çözümlerin sesin AVaudioPlayer veya MPMusicPlayerController ile çaldığını varsayar. Ama benim durumumda, sesim kullanıcı değil, UIwebView ile sarılmış html5 oynatıcımız tarafından oynanıyor.

Ses oynatıcısı bir html5/javascript çalarken, iOS çoklu görev modunda sesi yürütmeye nasıl devam edeceğine dair herhangi bir tavsiyenin var mı?

cevap

1

Teşekkürler, çocuklar, ama arka plan modundayken uygulamayı sadece bir döngüde meşgul etmekle kaldım. Bu, çalma listesindeki bir sonraki şarkıya bağlanırken zamanı kapatmak için yeterliydi. Kullandığım kod buna benzer: iPhone - Backgrounding to poll for events

4

Uygulamametiketi aracılığıyla UIWebView'da barındırılan html'de ses çalıyor ve arka planda oynatmayı destekliyor.

Öneride bulunduğunuz gibi, plist'inizde tanımlanan 'App play audio' arka plan moduna sahip olmanız gerekir. senin applicationDidFinishLaunching: işleyicisi için bu ekleme

Dene:

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

Sen onend olaya bir işlev ekleyerek this deneyebilirsiniz.