Как записать не только экран приложения, но и все на экране, включая другие приложения - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь реализовать приложение для записи экрана, используя ReplayKit (Swift). Кажется, когда я выхожу за пределы приложения, останавливается фоновая запись. Попробовав некоторые документы, я понимаю, что мне нужно реализовать Broadcast Extension. Если мое понимание правильное, тогда, пожалуйста, дайте мне руководство по программированию об этом.

1 Ответ

0 голосов
/ 21 марта 2020

Попробуйте эту библиотеку

Снимок экрана

ИЛИ этот:

Vid рекордер

import ScreenCapture

let recorder = ScreenCapture.recordScreen("/path/to/save/to.mp4")

recorder.start()
...
recorder.stop()

let movieUrl = recorder.destination

В противном случае вы можете сделать:

import ReplayKit
import UIKit

class ViewController: UIViewController, RPPreviewViewControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()

        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Start", style: .plain, target: self, action: #selector(startRecording))
    }

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

        recorder.startRecording{ [unowned self] (error) in
            if let unwrappedError = error {
                print(unwrappedError.localizedDescription)
            } else {
                self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Stop", style: .plain, target: self, action: #selector(self.stopRecording))
            }
        }
    }

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

        recorder.stopRecording { [unowned self] (preview, error) in
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Start", style: .plain, target: self, action: #selector(self.startRecording))

            if let unwrappedPreview = preview {
                unwrappedPreview.previewControllerDelegate = self
                self.present(unwrappedPreview, animated: true)
            }
        }
    }

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

Replay Kit только записывает свой текущий экран приложения, когда приложение становится фоновым, запись будет остановлена, и это будет дизайн.

...