Я использую MPMusicPlayerController
для воспроизведения песен из Apple Music.Я периодически (каждые несколько секунд) меняю очередь песен с помощью
setQueue(with: MPMusicPlayerStoreQueueDescriptor(storeIDs: ids))
У меня нет проблем во время воспроизведения музыки, очередь песен обновляется по запросу, я могу пропуститьк следующей песне, и все в порядке.Однако всякий раз, когда я приостанавливаю проигрыватель в середине песни, подождите немного, пока не будет установлена новая очередь, и начните воспроизведение снова - текущая песня теряется и начинает воспроизводиться следующая песня!
Итак, представьте следующую ситуацию:
- У меня есть песни
A, B, C, D
- Я установил это как очередь песен и позвонил
play()
player.nowPlayingItem
возвращает A
- Я установил очередь песни на
E, F, G, H
во время воспроизведения - Я звоню
player.skipToNext()
- песня E
начинает играть, как и ожидалось - Я звоню
player.pause()
- песня E
пауза - Я звоню
player.play()
- песня E
продолжает играть. До сих пор все в порядке - Я снова звоню
player.pause()
- песня E
пауза - Я установил очередь песни на
I, J, K, L
. - Я звоню
player.play()
- Я ожидаю, что приостановленная песня E
продолжит играть.Вместо этого начинает воспроизводиться песня I
Я также сделал некоторые записи журнала для вышеописанного сценария:
func togglePlayPause() {
if player.playbackState == .playing {
player.pause()
} else {
NSLog("NP before \(player.nowPlayingItem)") // prints E at step 10
player.play()
NSLog("NP after \(player.nowPlayingItem)") // prints nil at step 10
}
}
Странно, пауза / воспроизведение с экрана блокировки работает нормально, даже если я меняю очередь между ними.
Кто-нибудь сталкивался с подобной проблемой, какие-либо советы / обходные пути, как это исправить?