Я создаю приложение для потоковой передачи музыки, которое интегрируется со Spotify, и столкнулся с проблемами при реализации фоновых переходов песен для настраиваемого плейлиста. Каждая песня в плейлисте имеет сохраненную начальную секунду и определенную продолжительность, и приложение должно переходить к следующей песне, когда текущая достигает настроенной продолжительности.
Проблема
На переднем плане переходы работают идеально — каждая песня начинается с настроенной секунды и переходит после определенной продолжительности.
На заднем плане песни продолжают воспроизводиться до полной продолжительности, поскольку выбран метод перехода (например, «Запланировать следующую песню») не звонят.
Что Я пробовал
использовать DispatchQueue:
Я пробовал планировать переходы в DispatchQueue.main и DispatchQueue.global() с отложенным выполнением, но ни один из подходов не работает стабильно в фоновом режиме. .
Вопросы для обсуждения
Как я могу надежно планировать и выполнять переходы песен в фоновом режиме во время потоковой передачи с помощью Spotify SDK?
Существуют ли более эффективные подходы к выполнению запланированных задач в iOS, которые стабильно работают в фоновом режиме?
private func scheduleNextSong(remindDuration: TimeInterval? = nil) async {
let nextIndex = currentQueueIndex + 1
let songQueueItem = songQueue[currentQueueIndex]
let duration = remindDuration ?? TimeInterval(songQueueItem.songDuration)
guard nextIndex < songQueue.count else {
playNextSongWorkItem?.cancel()
playNextSongWorkItem = DispatchWorkItem {
self.sendToFlutterLastSong() // Notify Flutter that the last song has played
}
if let playNextSongWorkItem = playNextSongWorkItem {
DispatchQueue.global().asyncAfter(deadline: .now() + duration, execute: playNextSongWorkItem)
}
return
}
// Cancel any existing work items to prevent overlapping
playNextSongWorkItem?.cancel()
playNextSongWorkItem = DispatchWorkItem {
self.currentQueueIndex += 1
Task { await self.playCurrentSongQueue() }
}
if let playNextSongWorkItem = playNextSongWorkItem {
DispatchQueue.global().asyncAfter(deadline: .now() + duration, execute: playNextSongWorkItem)
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... potify-sdk
Как я могу реализовать надежные переходы фоновых песен с помощью Spotify SDK? ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение