ReplayKit не будет записывать дважды за один сеанс - PullRequest
0 голосов
/ 09 июля 2019

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

MyViewController[423:39346] viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}

В этом сценарии я на самом деле пытаюсь просмотреть запись на том же ViewController (только с другим воспроизводимым видео и измененным текстовым содержимым).Ниже мой код записи:

@objc func startRecording() {
        let recorder = RPScreenRecorder.shared()

        recorder.startRecording{ [unowned self] (error) in
            if let unwrappedError = error {
                print(unwrappedError.localizedDescription)
                print("NOT Recording")
            } else {
                self.video.play()
                print("Recording")
                self.isRecording = true
            }
        }

        recordIcon.isHidden = true
        ring.isHidden = true
    }

    @objc func stopRecording() {
        let recorder = RPScreenRecorder.shared()

        recorder.stopRecording( handler: { previewViewController, error in
            if let error = error {
                print("\(error.localizedDescription)")
            }

            // Handling iPads
            if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad {
                previewViewController?.modalPresentationStyle = UIModalPresentationStyle.popover
                previewViewController?.popoverPresentationController?.sourceRect = CGRect.zero
                previewViewController?.popoverPresentationController?.sourceView = self.view
            }
            if previewViewController != nil {
                self.previewViewController = previewViewController
                previewViewController?.previewControllerDelegate = self
            }
            self.present(previewViewController!, animated: true, completion: nil)
        })
        isRecording = false
        recordIcon.isHidden = false
        ring.isHidden = false
        return
    }

    func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
        dismiss(animated: true)
    }

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

1 Ответ

0 голосов
/ 09 июля 2019

Возможно, ваше приложение сохраняет запись на экране дольше, чем следует.Если это так, попробуйте реализовать функцию discardRecording(handler: @escaping () -> Void).Вот более подробная информация о discardRecording .

...