Мне нужно воспроизвести несколько аудиозаписей подряд, поэтому для этой цели я использую AVQueuePlayer
. Я загружаю в него аудио как:
for (NSInteger i = row ; i<_messagesArray.count ; i++)
{
_urlString = ((PFFile*)(_messagesArray[i][@"messageFile"])).url;
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:_urlString] options:nil];
NSArray *keys = @[@"playable"];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];
// Subscribe to the AVPlayerItem's DidPlayToEndTime notification.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:item];
if (_queuePlayer == nil)
{
_queuePlayer = [[AVQueuePlayer alloc] initWithPlayerItem:item];
}
else
{ /*This loads Async*/
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^() {
[_queuePlayer insertItem:item afterItem:nil];
}];
}
}
[_queuePlayer play];
Теперь проблема в том, что, поскольку я загружаю ресурсы с URL-адреса через Async
(см. условие else
в коде выше), порядок аудиофайлов в моем AVQueuePlayer
не совпадает с URL-адресами в _messagesArray
e.g :
_messagesArray = audioURL1 , audioURL2, audioURL3
затем из-за асинхронности, в зависимости от того, что загружается первым, оно сначала переходит в AVQueuePlayer
AVQueuePlayer = audio2 (from URL2) , audio1 (from URL1) , audio3 (from URL3)
Пожалуйста, предложите решение для поддержания порядка в моем плеере.
Спасибо.