在 iOS 中,使用 ReplayKit 进行屏幕录制时,你可以通过监听系统的通知来获取用户录制状态的变化。具体来说,你可以使用 RPRecordingDidChangeNotification 通知来监测录制状态的变化。
下面是一个简单的示例代码,演示了如何监听 ReplayKit 录制状态的变化:
swift
Copy code
import ReplayKit
class YourViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 注册通知
NotificationCenter.default.addObserver(self,
selector: #selector(recordingStateChanged(_:)),
name: NSNotification.Name.RPRecordingDidChange,
object: nil)
}
deinit {
// 在销毁时移除通知的观察者
NotificationCenter.default.removeObserver(self)
}
@objc func recordingStateChanged(_ notification: Notification) {
if let recorder = RPScreenRecorder.shared() {
switch recorder.isRecording {
case true:
// 用户开始录制
print("用户开始录制屏幕")
case false:
// 用户停止录制
print("用户停止录制屏幕")
}
}
}
// 其他你的视图控制器代码...
}
在上述代码中,我们使用 RPRecordingDidChangeNotification 通知,当录制状态发生变化时,调用 recordingStateChanged 方法。在该方法中,我们通过 RPScreenRecorder.shared().isRecording 来判断用户是否正在录制。因此,当用户停止录制时,你可以在相应的分支中执行你的逻辑。
请注意,为了防止内存泄漏,我们在 deinit 中移除了通知的观察者。确保在不需要监听通知时进行移除。