replaykit startrecording иногда никогда не входит в обработчик завершения

#ios #swift #replaykit

#iOS #swift #replaykit

Вопрос:

Я использую replay kit для сохранения видео моего экрана во время игрового процесса, но иногда случайным startRecordingWithMicrophoneEnabled образом и recorder.stopRecordingWithHandler никогда не вводит обработчик завершения

он не выдает ошибку, он просто запускается и зависает на неопределенный срок.

 if recorder.available amp;amp; recorder.microphoneEnabled {
    recorder.startRecordingWithMicrophoneEnabled(true) { [unowned self] (error) in
        if let unwrappedError = error {
            print(unwrappedError.localizedDescription)
        } else {
            print("called")
            self.manager.instructions.text = "Click to Start Game"
        }
    }
}

if recorder.available amp;amp; recorder.microphoneEnabled {
    print("initiating stop recording")
    recorder.stopRecordingWithHandler { [unowned self] (RPPreviewViewController, error) in
        print("in completion handler")
        if let previewView = RPPreviewViewController {
            print("will transition to gameplay video")
            previewView.previewControllerDelegate = self
            self.presentViewController(previewView, animated: true, completion: nil)
            self.sessionHandler.session.stopRunning()
        }
    }
}
  

Комментарии:

1. Перед вызовом startRecording необходимо проверить, доступны ли screen recorder и микрофон.

2. я добавил его, но проблема сохраняется

3. Пожалуйста, обновите вопрос с помощью вышеуказанных проверок.

4. обновлено; пожалуйста, проверьте это

5. проверка доступности микрофона отсутствует. Вам нужен микрофон, а проверка не существует.

Ответ №1:

Я получал то же самое. Работал на одном устройстве, а не на другом. Единственное отличие заключалось в том, что рабочее устройство было на iOS версии 10.1.0, а другое — iOS версии 10.0.2 — обновлено до 10.2.0, и оно сразу же начало работать.

Ответ №2:

У меня была такая же проблема, и я только что нашел ее причину (или, может быть, просто причину). Если ваше устройство подключено к Wi-Fi, у которого нет доступа в Интернет, возникает эта проблема. Если вы подключите его к Wi-Fi с доступом в Интернет или отключите Wi-Fi, он работает просто отлично. Я предполагаю, что при запуске записи ReplayKit пытается подключиться к некоторым серверам Apple, но никогда не достигает их, а также никогда не истекает время ожидания. Вы можете наблюдать такое же поведение в App Store. Когда вы подключены к Wi-Fi без Интернета, он пытается загрузить хранилище навсегда и никогда не истекает.