ReplayKit прекращает буферизацию после повторного перехода к фону

Я пытаюсь использовать ReplayKit для создания прямой трансляции внутри моего приложения. По сути, я хочу поделиться своим экраном и увидеть экран другого пользователя.

Чтобы получить буферы, ReplayKit предлагает следующую функцию:

func startCapture(handler captureHandler: ((CMSampleBuffer, RPSampleBufferType, Error?) -> Void)?, completionHandler: ((Error?) -> Void)? = nil)

Так что это мой метод для запуска ReplayKit и получения буферов:

private func startRecording() {
    RPScreenRecorder.shared().startCapture(handler: { (sampleBuffer, bufferType, error) in
        switch bufferType {

        case RPSampleBufferType.video:
            // Handle buffer and send it to server
            break

        case RPSampleBufferType.audioApp:
            break
        case RPSampleBufferType.audioMic:
            break
        }

    }, completionHandler: nil)
}

Это прекрасно работает, но я сталкиваюсь со следующей проблемой; если экран постоянно меняется, как мигающая кнопка, когда я отправляю приложение в фоновый режим и возвращаюсь несколько раз, ReplayKit прекращает вызывать его обработчик захвата.

Может быть проблема в том, что функция startCapture сделано для записи экрана в течение ограниченного времени, а не для прямой трансляции.

Я сделал пример в Github с мигающей кнопкой, которая показывает мою проблему; ReplayKit работает в обычном режиме до тех пор, пока не появится фон; затем он останавливается, и единственный способ заставить его работать снова - это перезагрузить устройство.

0 ответов

Другие вопросы по тегам