2016-11-15 60 views
0

我正在創建一個使用MPMediaItems和MPMediaPlayerController的音樂播放器(在Swift 3中)。我不能爲我的生活弄清楚如何從鎖定屏幕或通知中心控制音樂...iOS Swift - MPCommandCenter&NowPlayingInfoCenter控制音樂鎖屏

我已閱讀每篇文章,我可以找到關於MPRemoteCommandCenter和MPNowPlayingInfoCenter,我無法得到它的工作。

我已啓用背景音樂播放功能,目前音樂仍在應用程序之外播放,但未收到遠程命令。

下面是目前正在使用

在我看來代碼沒有加載我調用下面的函數

let player = MPMusicPlayerController.applicationMusicPlayer() 
let commandCenter = MPRemoteCommandCenter.shared() 

func configureCommandCenter() { 
    print("Enter configuration") 
    self.commandCenter.playCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in 
     guard let sself = self else { return .commandFailed } 
     print("Play") 
     sself.player.play() 
     self?.getNowPlayingItem() 
     return .success 
    } 

    self.commandCenter.pauseCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in 
     guard let sself = self else { return .commandFailed } 
     print("Pause") 
     sself.player.pause() 
     self?.getNowPlayingItem() 
     return .success 
    } 

    self.commandCenter.nextTrackCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in 
     guard let sself = self else { return .commandFailed } 
     print("next") 
     sself.player.skipToNextItem() 
     self?.getNowPlayingItem() 
     return .success 
    } 

    self.commandCenter.previousTrackCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in 
     guard let sself = self else { return .commandFailed } 
     print("Prev") 
     sself.player.skipToPreviousItem() 
     self?.getNowPlayingItem() 
     return .success 
    } 

} 

要重申我的項目編譯好,播放媒體,繼續播放媒體時,應用不支持重點和手機被鎖定時,但是在應用程序內沒有看到任何命令,導致應用程序無法通過鎖定屏幕或通知中心進行控制。任何幫助將不勝感激。

我還想提一下,我已經查看了與RemoteCommands和InfoCenter相關的Apple API文檔。

我錯過了一些關鍵步驟,以獲得從應用程序內註冊遠程命令?

+0

不相關,但你應該刪除你的'viewDidAppear'。這不相關。您將舊的MPRemoteCommandCenter方式與新的MPRemoteCommandCenter方式相結合。沒有意義。 – matt

+0

這些是我目前使用角色扮演角色的兩個相關功能......而且他們確實可以編譯,你能詳細說明爲什麼你認爲他們不會?也許這就是爲什麼我沒有收到命令的一部分? – Jerland2

+0

@matt,謝謝我將刪除函數我不知道有一種新舊方式,這是我第一次使用這些庫的經驗 – Jerland2

回答

1

問題是您的播放器是MPMusicPlayerController.applicationMusicPlayer()。您無法將應用程序音樂播放器用作遙控目標。

如果你想要遙控目標功能,你需要你的播放器是AVAudioPlayer。

+0

這是一個工作項目,你可以下載並運行,如果你想實驗:https://github.com/mattneub/Programming-iOS-Book-Examples/tree/61f0c753a080040e4a74b912e6c18dd97fe8bcaa/bk2ch14p644remote/ch27p912ducking – matt

+0

哦哇謝謝你,對不起關於JavaScript的不幸事件,它重新格式化了我的代碼,它已被修復。我是否糾正了以下事實:在使用AVAudioPlayer時會導致獲得遠程控制目標功能的能力,然後妨礙使用Apple Music(DRM)音樂?我是在這個假設下,因爲Apple Music用戶庫中的曲目沒有URL,因此無法使用AVAudioPlayer播放? – Jerland2

+1

我相信你是對的,因爲如果你能通過DRM通過你自己的聲音處理器,你會竊取聲音。如果您想要Apple Music和遙控器,那麼我可以使用'systemMusicPlayer'(也稱爲音樂應用程序)。 - 但是,請注意,Apple Music對您的原始問題沒有任何關注。這確實構成了一個全新的問題(並可以自由地將其作爲一個新問題)。 – matt