Swift:命令中心不起作用,即使我明确设置按钮启用?

Posted

技术标签:

【中文标题】Swift:命令中心不起作用,即使我明确设置按钮启用?【英文标题】:Swift: command center not working, even though I explicitly set buttons to enable? 【发布时间】:2018-05-23 00:09:13 【问题描述】:

好的,Apple 的命令中心出现了一些问题,播放背景音频/在锁定屏幕上,不明白为什么。看起来很简单,但我什至没有在指挥中心可靠地显示剧集信息,绝对无法播放/暂停。

首先我开始音频会话:

  do 
                try AVAudiosession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)
                print("Playback OK")
                try AVAudioSession.sharedInstance().setActive(true)
                print("Session is Active")
             catch 
                print(error)
            

然后我将我的命令中心按钮设置为明确启用:

UIApplication.shared.beginReceivingRemoteControlEvents()
        let commandCenter = MPRemoteCommandCenter.shared()


        commandCenter.skipForwardCommand.isEnabled = true
        commandCenter.skipBackwardCommand.isEnabled = true
        commandCenter.nextTrackCommand.isEnabled = true

        commandCenter.togglePlayPauseCommand.isEnabled = true
//        commandCenter.previousTrackCommand.isEnabled = true
//        commandCenter.togglePlayPauseCommand.isEnabled = true

        commandCenter.togglePlayPauseCommand.addTarget(self, action:#selector(togglePlayPause))
//        commandCenter.nextTrackCommand.addTarget(self, action:#selector(nextTrackForward))
//        commandCenter.previousTrackCommand.addTarget(self, action:#selector(nextTrackBack))

        commandCenter.skipForwardCommand.addTarget(self, action:#selector(ffPressed))
        commandCenter.skipBackwardCommand.addTarget(self, action:#selector(rwPressed))

如果这对音频很重要,这里是 lldb plist 键:

这里有什么问题?

【问题讨论】:

【参考方案1】:

也许你的问题很老,但有人可能也需要这个,所以我就是这样做的:

Swift 5

let player = AVPlayer()

func commandCenter () 
    let commandCenter = MPRemoteCommandCenter.shared()
    commandCenter.playCommand.addTarget          (commandEvent) -> MPRemoteCommandHandlerStatus in  self.play();   return .success 
    commandCenter.pauseCommand.addTarget         (commandEvent) -> MPRemoteCommandHandlerStatus in  self.pause();  return .success 


func pause () 
    player.pause ()
    print("paused")


func play () 
    player.play()
    print("play")

您不需要启用 commandCenter.playCommand 为 true

【讨论】:

以上是关于Swift:命令中心不起作用,即使我明确设置按钮启用?的主要内容,如果未能解决你的问题,请参考以下文章

StackView 中的按钮不起作用 - Swift

navigationItem.set_BarButton 不起作用 - 迅速

Swift iPad - 按钮不起作用

关闭按钮在 Swift Playground 中不起作用

即使在安装 .NET 核心 SDK 后,Dotnet 命令也不起作用

Swift:按钮在 UIScrollView 中不起作用