Swift 2.0 中的远程控制 (MPNowPlayingInfoCenter)

Posted

技术标签:

【中文标题】Swift 2.0 中的远程控制 (MPNowPlayingInfoCenter)【英文标题】:Remote Controls in Swift 2.0 (MPNowPlayingInfoCenter) 【发布时间】:2016-03-01 13:09:03 【问题描述】:

我正在尝试使用 Swift 制作广播应用。而且我在锁定屏幕上的遥控器有问题。根本不起作用 - 屏幕上什么都没有。来自 ViewController 的代码:

 override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    playButton.setTitle("Play", forState: UIControlState.Normal)
    if NSClassFromString("MPNowPlayingInfoCenter") != nil 
        let image:UIImage = UIImage(named: "logo_player_background")!
        let albumArt = MPMediaItemArtwork(image: image)
        var songInfo: NSMutableDictionary = [
            MPMediaItemPropertyTitle: "Radio Brasov",
            MPMediaItemPropertyArtist: "87,8fm",
            MPMediaItemPropertyArtwork: albumArt
        ]
        MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = songInfo as [NSObject : AnyObject]
    
    if (AVAudiosession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)) 
        println("Receiving remote control events")
        UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
     else 
        println("Audio Session error.")
    

即使在修复MPNowPlayingInfoCenter 行之后,锁定屏幕上也不会出现任何内容。我做错了什么?

代码来自tutorial

【问题讨论】:

【参考方案1】:

好的,我已经解决了。问题出在 AVAudioSession 部分:

if (AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)) 
    println("Receiving remote control events")
    UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
 else 
    println("Audio Session error.")

我已将其替换为:

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: [])
    try! AVAudioSession.sharedInstance().setActive(true)

并且遥控器正在工作:)

【讨论】:

你让我很开心 +1

以上是关于Swift 2.0 中的远程控制 (MPNowPlayingInfoCenter)的主要内容,如果未能解决你的问题,请参考以下文章

应用程序中的调用函数didbecomeactive - Swift 2.0

Swift 2.0 中的supportedInterfaceOrientationsForWindow

Xcode 中的录制设置:Swift 2.0

Swift 2.0:推断闭包类型错误

Swift 2.0 转换问题 NSFetchedResultsController didChangeObject

处理 Swift 2.0 中的转换错误