ios - 让 MPRemoteCommandCenter.shared() 在 tvOS 中工作

标签 ios swift tvos mpremotecommandcenter

好吧,也许我在这里漏掉了什么。我想在我的应用程序中使用黑色 Remote ,并基本上从 WWDC 2017 上关于这个问题的演讲中获得了这段代码。它说...

媒体播放的一致和直观控制是 tvOS 上许多应用程序的关键,正确使用和配置 MPNowPlayingInfoCenter 和 MPRemoteCommandCenter 对于提供出色的用户体验至关重要。深入研究这些框架,了解如何确保无缝体验,无论您的应用是使用 Siri、Siri Remote 还是 iOS Remote 应用控制

所以我将这些行添加到我的 tvOS 应用程序的 viewDidLoad 并且它们基本上什么都不做?

var commandCenter = MPRemoteCommandCenter.shared()

override func viewDidLoad() {
    super.viewDidLoad()

    commandCenter.playCommand.isEnabled = true
    commandCenter.pauseCommand.isEnabled = true

    commandCenter.playCommand.addTarget { (commandEvent) -> MPRemoteCommandHandlerStatus in
        print("You Pressed play")
        return .success
    }

    commandCenter.pauseCommand.addTarget { (commandEvent) -> MPRemoteCommandHandlerStatus in
        print("You Pressed pause")
        return .success
    }
   }

我运行该应用程序,并尝试按下黑色 Remote 上的播放/暂停按钮,但调试控制台没有打印任何内容?还在 plist 中添加了一些与后台模式相关的代码...这应该有效还是我错过了这里的某个地方?

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
    <string>external-accessory</string>
</array>

最佳答案

当您的应用程序位于前台时,MPRemoteCommandCenter 中的命令不会由 Siri Remote 触发。要在前台时从远程获取事件,请像您可能已经习惯的那样使用 UIGestureRecognizer

MPRemoteCommandCenter 中的这些命令用于系统可能希望与您的播放交互的其他方式,例如:

  • 您的应用正在后台播放音频,用户按下 Remote 上的暂停按钮:系统会要求您的应用暂停播放。

    <
  • 用户正在使用适用于 iOS 的 TV Remote 应用,并且正在使用该应用的播放控制屏幕。

关于ios - 让 MPRemoteCommandCenter.shared() 在 tvOS 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44562925/

相关文章:

xcode - 无法将 Apple TV 与 Xcode 配对

uikit - GCEventViewController 不禁用 UIKit 控件 (tvOS)

ios - 从较大的 UIImage 中裁剪一部分 UIImage,并包括非图像部分

删除并重新安装应用后,iOS 钥匙串(keychain)数据会保留吗?

ios - 使用 iOS6 SDK 提交应用更新

swift - 为什么核心数据不会在 swiftui 类中加载,但会在结构 View 中加载

ios - Swift 中的 NSDictionary 表示

ios - 如何在 iOS 和 tvOS 上使用相同的 pod?

ios - Apple 证书可以在计算机之间传输吗?

objective-c - 在 xib 文件中的 View 上设置类