Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何不仅录制应用程序';s屏幕,但屏幕上的所有内容,包括其他应用程序_Ios_Swift_Screen Recording_Replaykit_Swift5.2 - Fatal编程技术网

Ios 如何不仅录制应用程序';s屏幕,但屏幕上的所有内容,包括其他应用程序

Ios 如何不仅录制应用程序';s屏幕,但屏幕上的所有内容,包括其他应用程序,ios,swift,screen-recording,replaykit,swift5.2,Ios,Swift,Screen Recording,Replaykit,Swift5.2,我正在尝试使用ReplayKit(Swift)实现屏幕录制应用程序。似乎当我走出应用程序时,会停止后台记录。在尝试了一些文档之后,到目前为止,我了解到我需要实现广播扩展。如果我的理解是正确的,那么请给我一些编程指南 试试这个库 或者这个: 否则,您可以: import ReplayKit import UIKit class ViewController: UIViewController, RPPreviewViewControllerDelegate { override fu

我正在尝试使用ReplayKit(Swift)实现屏幕录制应用程序。似乎当我走出应用程序时,会停止后台记录。在尝试了一些文档之后,到目前为止,我了解到我需要实现广播扩展。如果我的理解是正确的,那么请给我一些编程指南

试试这个库

或者这个:

否则,您可以:

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仅记录其当前的应用程序屏幕,每当应用程序成为背景时,记录将停止,这是出于设计

以上代码仅记录应用程序屏幕,而不记录整个iPhone屏幕。喜欢这个应用。。请检查这是否可行。我不这么认为。iTunes中已经有一些应用程序具有这一功能。
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)
    }
}