Я пытаюсь сделать задержку между AVPlayerItems в моем AVQueuePlayer. В настоящее время я реализовал «фоновый сервис», который обновляет местоположение пользователей:
class BackgroundService: NSObject, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
func startBackground() {
locationManager.requestWhenInUseAuthorization()
locationManager.delegate = self
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
locationManager.activityType = .automotiveNavigation
locationManager.showsBackgroundLocationIndicator = false
locationManager.startUpdatingLocation()
}
func stopBackground() {
locationManager.stopUpdatingLocation()
}
}
Это, конечно, ужасное решение, так как местоположение не имеет ничего общего с функциональностью, и когда приложение переходит в фоновый режим, появляется большая жирная синяя полоса, которая гласит: «Это приложение использует расположение». (И я даже не знаю, пропустит ли Apple приложение через процесс проверки).
Я пробовал другие подходы, например фоновую многопоточность, но не повезло:
currentComopnentDeadlineBackgroundTask = DispatchWorkItem(block: {
self.queuePlayer?.play()
self.progressTimer?.invalidate()
self.progressTimer = nil
})
DispatchQueue.global(qos: .background).asyncAfter(deadline: now + .seconds(30), execute: currentComopnentDeadlineBackgroundTask!)
Этот код должен воспроизводить проигрыватель очереди через 30 секунд, и он работает, когда приложение находится на переднем плане, но он не работает, когда устройство переводится в спящий режим.
Я пытался заставить приложение работать в фоновом режиме, но приложение закрывается системой примерно через 30 секунд:
UIApplication.shared.beginBackgroundTask(expirationHandler: {})
Я действительно борюсь с этим и не может найти какие-либо темы с решениями или веб-сайтов, которые обращаются к этому. Я работал над этим вопросом в течение месяца, и если у кого-то есть решение, я был бы более чем благодарен!
Заранее спасибо!