iOS11 如何防止用户录屏()

iOS 11中新增了录屏功能,之前的系统要想录屏,只能通过Airplay 或者屏幕镜像软件,例如 Reflector。有了录屏功能确实方便了用户,但对于一些做内容的公司和网站,特别是视频网站,并不希望自己的付费视频被录制并在互联网上传播。
那么ios系统下如何避免自己app的内容被录屏呢?
iOS 11 SDK 中新增了UIScreen的API用以告知应用当前屏幕正在录屏。当UIScreen.isCaptured 为true时,表示当前屏幕正在被录制、镜像或被Airplay 发送。以下几种情况下UIScreen.isCaptured 的值为true:

  1. 使用iPhone控制中心的屏幕录制控件,如图1所示;
  2. 使用Mac的QuickTime Player,如图2所示;
  3. 在iPhone上使用Airplay或镜像软件,如图3所示;
  4. 屏幕正在被拷贝到其他地方;
iOS11 如何防止用户录屏()
文章图片

图1
iOS11 如何防止用户录屏()
文章图片

【iOS11 如何防止用户录屏()】图2
iOS11 如何防止用户录屏()
文章图片

图3
当录屏状态发生变化时,UIKit会发送UIScreenCapturedDidChange的notification,该notification的object参数即为isCaptured属性发生变化的 UIScreen对象,另外,notification没有userInfo参数。
基于此,我们可以在应用中接收此通知,来对用户的录屏行为做相应的处理。比如,在视频app中,我们可以添加通知来监测 UIScreen.isCaptured 的变化,当UIScreen.isCaptured为true时,暂停视屏播放,并弹出提示告知用户,由于正在录屏,不予播放视屏。

    推荐阅读