如何在 iOS 应用中禁用屏幕录制
Posted
技术标签:
【中文标题】如何在 iOS 应用中禁用屏幕录制【英文标题】:How to disable screen Recording in iOS app 【发布时间】:2019-05-21 16:08:32 【问题描述】:有什么方法可以禁用屏幕录制?还是可以通过配置文件?或任何第三方库可用?
【问题讨论】:
@PyaePhyoeShein 不使用 blockView 任何解决方案?..self.view.backgroundColor = UIColor.red
或者别的怎么样?
不会中断我的应用用户体验。只有我的应用可以避免录屏??。
显示带有警告的覆盖弹出窗口是最好的。
【参考方案1】:
sharedRecorder.stopRecording( handler: previewViewController, error in
if let error = error
print("\(error.localizedDescription)")
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)
)
return
https://developer.apple.com/documentation/replaykit/rpscreenrecorder/1620990-stoprecording
【讨论】:
【参考方案2】:NotificationCenter.default.addObserver(self, selector: #selector(preventScreenRecording), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)
并在主视图中创建一个视图并防止这样。
(void) preventScreenRecording
if (@available(ios 11.0, *))
BOOL isCaptured = [[UIScreen mainScreen] isCaptured];
if (isCaptured)
self.blockView.hidden = false;
else
self.blockView.hidden = true;
【讨论】:
你能在这里解释一下什么是blockView吗?我相信这个方法是在截屏后调用的。我还没有测试过 @PPShein 有什么方法可以禁用屏幕截图吗? @NightFury blockView 是您要禁用 screenRecording 的区域。 @SagarDaundkar 我想这和我提到的一样。 你能写成完整的代码吗?谢谢【参考方案3】:当您的应用启动时,您可以测试UIScreen.isCaptured
属性,如果设置为true
,则显示一些初始屏幕。
您还应该观察(在某个地方订阅)capturedDidChangeNotification
notification,如果UIScreen.isCaptured
设置为true
,请执行相同的操作(显示初始屏幕)。
【讨论】:
我能够使用 UIScreen.isCaptured 检测屏幕重新编码。如何在我的应用程序中避免屏幕重新编码,而不会中断我的应用程序的用户体验。以上是关于如何在 iOS 应用中禁用屏幕录制的主要内容,如果未能解决你的问题,请参考以下文章