Ios 使用AVAudioPlayerNode播放片段时,我是否可以注册两个不同的回调,即计划完成和播放完成?
我正在使用AVAudioPlayerNode在Swift中构建一个多声道音频播放器。当计划播放音频片段时,我希望在计划完成时以及文件播放完成时/如果文件播放完成时收到通知。Swift API的编写方式似乎表明,您只能注册其中一个API。如果调用short函数:Ios 使用AVAudioPlayerNode播放片段时,我是否可以注册两个不同的回调,即计划完成和播放完成?,ios,swift,avaudioplayernode,Ios,Swift,Avaudioplayernode,我正在使用AVAudioPlayerNode在Swift中构建一个多声道音频播放器。当计划播放音频片段时,我希望在计划完成时以及文件播放完成时/如果文件播放完成时收到通知。Swift API的编写方式似乎表明,您只能注册其中一个API。如果调用short函数: func scheduleSegment(_ file: AVAudioFile, startingFrame startFrame: AVAudioFramePosition, frameCount
func scheduleSegment(_ file: AVAudioFile,
startingFrame startFrame: AVAudioFramePosition,
frameCount numberFrames: AVAudioFrameCount,
at when: AVAudioTime?,
completionHandler: AVAudioNodeCompletionHandler? = nil)
一旦文件被调度(不是播放,只是被调度为播放),回调就会被调用,并且您不能传递任何特殊参数,只能传递一个基本闭包
调用fancier函数时,您可以指定您想要的回调类型,但必须选择一种且仅选择一种:
func scheduleSegment(_ file: AVAudioFile,
startingFrame startFrame: AVAudioFramePosition,
frameCount numberFrames: AVAudioFrameCount,
at when: AVAudioTime?,
completionCallbackType callbackType: AVAudioPlayerNodeCompletionCallbackType,
completionHandler: AVAudioPlayerNodeCompletionHandler? = nil)
enum AVAudioPlayerNodeCompletionCallbackType可以是以下类型之一:
数据消耗、数据呈现或数据回放
不幸的是,我必须选一个,但实际上我需要两个。我需要在计划完成和数据回放时得到通知
有办法做到这一点吗