2014-12-03 18 views
5

La mia app è in esecuzione, ma non appena lo schermo è attivo o quando si fa qualcos'altro su iPhone, il flusso si interrompe. Ho attivato le modalità di background "riproduce l'audio" ma non aiuta.L'app di streaming rapido iOS non riproduce la musica in modalità background

Questo è il mio ViewController.swift

import UIKit 
import MediaPlayer 

class ViewController: UIViewController { 
    let player: MPMoviePlayerViewController = MPMoviePlayerViewController(contentURL: NSURL(string: "http://url to my stream")) 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     player.moviePlayer.movieSourceType = .Streaming 
     self.presentViewController(player, animated: true, completion: nil) 

     loadAddressURL() 
    } 

    func stop() { 
     player.moviePlayer.stop() 
    } 
    @IBAction func Hitplay(sender: AnyObject) { 
     player.moviePlayer.play() 
    } 

    @IBAction func Hitpause(sender: AnyObject) { 
     player.moviePlayer.stop() 
    } 

    @IBOutlet var Nowplay: UIWebView! 
    var URLPath = "http://url to on air now" 

    func loadAddressURL() { 
     let requestURL = NSURL (string:URLPath) 
     let request = NSURLRequest (URL: requestURL!) 
     Nowplay.loadRequest(request) 
    } 
} 

ed ecco la mia info.plist

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-  1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>CFBundleDevelopmentRegion</key> 
<string>en</string> 
<key>CFBundleExecutable</key> 
<string>$(EXECUTABLE_NAME)</string> 
<key>CFBundleIdentifier</key> 
<string>com.product name.$(PRODUCT_NAME:rfc1034identifier)</string> 
<key>CFBundleInfoDictionaryVersion</key> 
<string>6.0</string> 
<key>CFBundleName</key> 
<string>$(PRODUCT_NAME)</string> 
<key>CFBundlePackageType</key> 
<string>APPL</string> 
<key>CFBundleShortVersionString</key> 
<string>1.0</string> 
<key>CFBundleSignature</key> 
<string>????</string> 
<key>CFBundleVersion</key> 
<string>1</string> 
<key>LSRequiresIPhoneOS</key> 
<true/> 
<key>UIBackgroundModes</key> 
<array> 
    <string>audio</string> 
</array> 
<key>UILaunchStoryboardName</key> 
<string>LaunchScreen</string> 
<key>UIMainStoryboardFile</key> 
<string>Main</string> 
<key>UIRequiredDeviceCapabilities</key> 
<array> 
    <string>armv7</string> 
</array> 
<key>UISupportedInterfaceOrientations</key> 
<array> 
    <string>UIInterfaceOrientationPortrait</string> 
    <string>UIInterfaceOrientationPortraitUpsideDown</string> 
</array> 
</dict> 

risposta

7

Impostazione della modalità audio di sottofondo è corretto, ma penso che è anche necessario impostare la categoria audio per la sessione audio.

Prova ad aggiungere questo per la vostra applicazione delegato didFinishLaunchingWithOptions:

var activeError: NSError? = nil 
AVAudioSession.sharedInstance().setActive(true, error: &activeError) 

if let actError = activeError { 
    NSLog("Error setting audio active: \(actError.code)") 
} 

var categoryError: NSError? = nil 
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: &categoryError) 

if let catError = categoryError { 
    NSLog("Error setting audio category: \(catError.code)") 
} 
+0

sì, grazie per il vostro aiuto si sta lavorando come dovrebbe! –

Problemi correlati