0

我的 ios 应用程序使用 AVQueuePlayer 播放音频。

播放/暂停控件在控制中心和 ios 锁定屏幕上正常工作,但不适用于从蓝牙设备调用的命令。例如,双击airpods或其他第三方蓝牙耳机时,我的应用程序中的回调永远不会被调用。

我在装有 iOS 15 的 iphone 8 plus 设备上运行。

我正在使用https://developer.apple.com/documentation/avfoundation/media_playback_and_selection/creating_a_basic_video_player_ios_and_tvos/controlling_background_audio

在应用程序启动时,它会像这样设置音频会话:

        let audioSession = AVAudioSession.sharedInstance()
        do {
            try audioSession.setCategory(.playAndRecord,
                                         mode: .spokenAudio,
                                         options: [
                                            .allowBluetooth,
                                            .defaultToSpeaker
                                         ])
            try audioSession.setActive(true)

该应用程序侦听这样的播放/暂停事件。

        let commandCenter = MPRemoteCommandCenter.shared()
        commandCenter.playCommand.addTarget { event in
print("play")
    return .success
        }
        commandCenter.pauseCommand.addTarget { event in
print("pause")
    return .success
        }
commandCenter.togglePlayPauseCommand.addTarget { event in
    print("toggleplaypause")
    return .success
}

通过所有蓝牙设备播放正常。在锁定屏幕或控制中心,播放/暂停会导致“播放”和“暂停”被打印出来。但是点击airpods时没有打印任何内容。(点击 airpods 在任何其他音频应用程序中都可以正常工作。)

有什么想法可能会丢失吗?

4

0 回答 0