2

WideVine iOS CDM Player 正在播放受 DRM 保护的内容。现在,iOS11 引入了一个新的内置功能,即屏幕录制。使用此功能,用户可以轻松捕获或记录受 DRM 保护的内容。

我使用了 iOS11 Beta 的 isCaptured 和 UIScreenCapturedDidChange 属性并尝试防止记录受 DRM 保护的内容,但是当我第一次启动我的应用程序时,这 isCaptured 和 UIScreenCapturedDidChange 工作正常。现在,当我终止正在运行的应用程序(终止应用程序)并再次启动时,我的应用程序没有收到 isCaptured 和 UIScreenCapturedDidChange 的任何值。

现在我尝试使用 iOS11 屏幕录制功能录制 Netflix 和 Amazon Prime 内容,但它不允许录制并出现黑屏。

我想要在 iOS11 设备上打开屏幕录制时出现类似的黑屏,但我没有解决方案。如果有人有那么请帮忙。

4

3 回答 3

3

Netflix 和 Amazon Prime iOS 应用程序正在为苹果设备使用 Apple DRM 解决方案 - FairPlay ( https://developer.apple.com/streaming/fps/ )。AVPlayer 播放 FairPlay 加密内容时,iOS11 录屏无法截取。

于 2017-11-09T18:42:19.020 回答
2

您可以UIScreen.main.isCaptured通过屏幕录制或 AirPlay 等来判断屏幕是否正在录制...然后显示您的黑色视图以覆盖您的屏幕

于 2017-09-22T05:00:56.877 回答
0

您只需在 Appdelegate.swift 页面中进行以下更改。

当用户尝试记录屏幕时,它将自动在应用程序顶部添加模糊视图。

    weak var screen : UIView? = nil

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    NotificationCenter.default.addObserver(self, selector: #selector(preventScreenRecording), name: UIScreen.capturedDidChangeNotification, object: nil)
    return true
}

@objc func preventScreenRecording() {
    let isCaptured = UIScreen.main.isCaptured
    print("isCaptured: \(isCaptured)")
    if isCaptured {
        blurScreen()
    }
    else {
        removeBlurScreen()
    }
}

func blurScreen(style: UIBlurEffect.Style = UIBlurEffect.Style.regular) {
    screen = UIScreen.main.snapshotView(afterScreenUpdates: false)
    let blurEffect = UIBlurEffect(style: style)
    let blurBackground = UIVisualEffectView(effect: blurEffect)
    screen?.addSubview(blurBackground)
    blurBackground.frame = (screen?.frame)!
    window?.addSubview(screen!)
}

func removeBlurScreen() {
    screen?.removeFromSuperview()
}
于 2022-02-18T09:14:46.563 回答