2016-12-21 40 views
1

我試圖捕捉播放/停止/下一個/ prev用戶操作鎖定屏幕時,玩家是積極和玩,一些如何它不工作。xcode swift 3鎖定屏幕遙控器不工作?

裏面的日誌類MusicPlayerViewController: BaseViewController

override func viewDidLoad() { 
    super.viewDidLoad() 

do { 
    UIApplication.shared.beginReceivingRemoteControlEvents() 
    print("bb> Receiving remote control events\n") 
} catch { 
    print("bb> Audio Session error.\n") 
} 

let commandCenter = MPRemoteCommandCenter.shared() 
    commandCenter.nextTrackCommand.isEnabled = true 
    commandCenter.nextTrackCommand.addTarget(self, action: #selector(MusicPlayerViewController.nextTrackCommandSelector)) 

} 

func nextTrackCommandSelector() 
{ 
    print("omg") 
} 

我只能看到

bb> Receiving remote control events 

也在裏面AppDelegate.swift具有

override func remoteControlReceived(with event: UIEvent?) { 

     print("remote::") 


     guard let event = event else { 
      print("no event\n") 
      return 
     } 
     guard event.type == UIEventType.remoteControl else { 
      print("received other event type\n") 
      return 
     } 
     switch event.subtype { 
     case UIEventSubtype.remoteControlPlay: 
      print("received remote play\n") 
     case UIEventSubtype.remoteControlPause: 
      print("received remote pause\n") 
     case UIEventSubtype.remoteControlTogglePlayPause: 
      print("received toggle\n") 
     case UIEventSubtype.remoteControlNextTrack: 
      print("clicked next \n") 
     case UIEventSubtype.remoteControlPreviousTrack: 
      print("clicked Prev \n") 
     default: 
      print("received \(event.subtype) which we did not process\n") 
     } 
    } 

和能力

enter image description here

我錯過了什麼?

回答

2

我找到了解決辦法

爲SWIFT 3我要補充這個

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

有幾件事情:

  1. 您同時使用委託風格和遠程事件處理的MPRemoteCommandCenter風格。挑一個,而不是兩個,看他們是否有衝突。 Apple建議使用MPRemoteCommandCenter風格,但如果您支持較舊的iOS版本,則可能需要堅持使用委託風格。

  2. 如果您確實選擇使用委託樣式,我的回憶是您還必須成爲第一個響應者才能開始接收遠程控制事件。

  3. 無論您選擇哪種風格的事件處理,您都必須在您的應用中播放音頻,讓系統知道將事件路由給您。鎖屏(或音頻控制中心)應在「正在播放」區域中列出您的應用程序。