我尝试检查屏幕是否正在录制,然后才允许以下操作,我最初尝试使用ReplayKit自动录制,但这不是一个可行的解决方案,因为它不允许在应用程序外录制,所以基本上我想做的是检查用户是否已经开始使用IOS控制中心录制器录制屏幕,然后再允许他们执行另一段代码。
比如:
func handleScreen() {
var isRecording: Bool = false
if ScreenIsRecording { //(this is what i don't know how to check)
isRecording = true
}
if isRecording == true {
// execute this code.
}
}
我对其他能够执行屏幕录制的解决方案持开放态度,但它必须能够录制所有屏幕,而不仅仅是应用程序内的屏幕。
谢谢
2条答案
按热度按时间vlurs2pr1#
UIScreen
包含UIScreen.isCaptured
属性,您应该能够引用该属性来确定屏幕是否可能正在录制。但是,如果设备正在进行AirPlay或其他广播,则此属性也将返回true
:值为YES表示系统正在积极录制、镜像或使用AirPlay流化屏幕内容。
eyh26e7m2#
我刚刚在iOS 16上测试了这个,尽管文档中说iscaptured应该在AirPlay上返回true,但我测试的时候却没有!
观察isCaptured with NotificationCenter的变更:
处理通知:
启动AirPlay时不会触发此通知,如果您在AirPlay时开始屏幕录制,则在停止录制时会触发通知,但即使AirPlay仍处于活动状态,UIScreen.main.isCaptured也为false。