如何通过API/Kit获取macOS媒体播放器信息并控制播放暂停?
macOS 系统级媒体控件对应的API说明
核心依赖框架:Media Player
对应系统菜单栏媒体控件的全局媒体状态获取与控制功能,主要由MediaPlayer框架提供,核心组件如下:- MPRemoteCommandCenter:这是实现全局播放/暂停控制的核心API。你可以通过它主动触发命令,控制当前活跃的媒体播放器:
- 触发播放:
MPRemoteCommandCenter.shared().playCommand().sendAction(with: nil) - 触发暂停:
MPRemoteCommandCenter.shared().pauseCommand().sendAction(with: nil)
它也支持监听系统媒体快捷键的触发事件,实现自定义响应逻辑。
- 触发播放:
- MPNowPlayingInfoCenter:用于获取当前正在播放的媒体状态与信息。通过读取
MPNowPlayingInfoCenter.default().nowPlayingInfo字典,可以获取播放状态(MPNowPlayingInfoPropertyPlaybackRate键对应的值,1为播放,0为暂停)、媒体标题、艺术家等数据。
- MPRemoteCommandCenter:这是实现全局播放/暂停控制的核心API。你可以通过它主动触发命令,控制当前活跃的媒体播放器:
权限与配置要求
- 项目中需导入
MediaPlayer框架。 - 在macOS 10.14及以上版本,需要在
Info.plist中添加NSAppleMusicUsageDescription权限声明,说明应用使用媒体控制的原因;同时要在项目的“Signing & Capabilities”中启用Media Library权限。
- 项目中需导入
补充:特定播放器的精细控制
如果需要针对Spotify、iTunes这类特定播放器做更细致的操作,可使用Scripting Bridge生成对应应用的桥接文件,但这不属于系统全局媒体控件的API范畴,仅适用于单个应用。
内容的提问来源于stack exchange,提问作者AstraLuma
相关产品推荐
相关产品推荐

