如何使用 AVFoundation 检测单个 Airpod 被取下?

How to Detect Single Airpod is Taken off using AVFoundation?

正如标题所说,我需要检测用户在播放音乐时摘下airpods。由于某些原因,我必须使用 AVAudioplayer 而不是 MPMusicPlayer 来播放音乐,并且 AVAudioSession 只有在所有 airpods 都被取下时才能收到暂停事件。

AVFoundation有什么方法可以检测到单个Airpod被摘下了吗?或者 Apple 没有在 AVFoundation 中实现这个?

最后我通过使用 MPRemoteCommandCenter 接收暂停事件解决了这个问题。暂停事件可以由一个或多个 Airpods 起飞触发。收到事件后,我可以在处理程序块中暂停 AVAudioplayer 播放的音乐。

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[MPRemoteCommandCenter sharedCommandCenter].pauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {

    // Paused by one or more Airpods taken off !
    return MPRemoteCommandHandlerStatusSuccess;
}];