Как я могу сделать задержку между AVPlayerItems в AVQueuePlayer в фоновом режиме? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь сделать задержку между 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: {})

Я действительно борюсь с этим и не может найти какие-либо темы с решениями или веб-сайтов, которые обращаются к этому. Я работал над этим вопросом в течение месяца, и если у кого-то есть решение, я был бы более чем благодарен!

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...