gpt4 book ai didi

ios - iOS 11 中如何判断是否录屏

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:22:37 25 4
gpt4 key购买 nike

我有一个应用程序,它包含受版权保护的内容。我不希望用户记录它。如果他们开始录制屏幕,我希望我的应用能够捕捉到这一点。录屏时catch函数是什么?

我不想阻止,我想了解并捕获它。

注意:一些答案表明解决方案包括 AirPlay 和 Mirroring。我想要的是只捕捉在应用程序之前或期间开始的屏幕录制。我想允许用户使用 AirPlay 和镜像。

最佳答案

SWIFT 5.0

为了防止屏幕录制,我创建了一个单独的类 ScreenRecordingProtoector

女巫看起来像这样:

final class ScreenRecordingProtoector {

private var window: UIWindow? {
if #available(iOS 13.0, *) {
return (UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate)?.window
}
return (UIApplication.shared.delegate as? AppDelegate)?.window
}

func startPreventing() {
NotificationCenter.default.addObserver(self, selector: #selector(preventScreenShoot), name: UIScreen.capturedDidChangeNotification, object: nil)
}

@objc private func preventScreenShoot() {
if #available(iOS 13.0, *) {
if UIScreen.main.isCaptured {
window?.isHidden = true
} else {
window?.isHidden = false
}
}
}

// MARK: - Deinit
deinit {
NotificationCenter.default.removeObserver(self)
}
}

然后我在 AppDelegate 上面创建一个变量 didFinishLaunchingWithOptions let screenRecordingProtoector = ScreenRecordingProtoector()然后我调用里面 didFinishLaunchingWithOptions screenRecordingProtoector.startPreventing()

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
private let preventService = PreventCapturingService()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

preventService.startPreventScreenRecording()

return true
}
}

它在 Swift 5.0 中对我来说很好用

关于ios - iOS 11 中如何判断是否录屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com