Самый чистый способ сделать это - самостоятельно настроить аудиоплеер с помощью AVPlayer
и настроить наблюдение с течением времени с помощью -[AVPlayer addBoundaryTimeObserverForTimes:queue:usingBlock:]
.
Если вы застряли с AVAudioPlayer, я полагаю, вы можете использовать Наблюдение значения ключа для прослушивания изменения currentTime:
static NSString *someObservationContext = @"something";
[audioPlayer addObserver:self forKeyPath:@"currentTime" options:0 context:&someObservationContext];
, а затем реализовать
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (context == &someObservationContext) {
NSTimeInterval t = [(AVAudioPlayer *)object currentTime];
// do your thing
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
Обязательно вызовите -[NSObject removeObserver:forKeyPath:]
, чтобы убрать хук наблюдения, прежде чем снимать AVAudioPlayer.