掌桥专利:专业的专利平台
掌桥专利
首页

基于IOS系统的防录屏方法及装置

文献发布时间:2024-01-17 01:20:32


基于IOS系统的防录屏方法及装置

技术领域

本发明涉及软件开发技术领域,具体涉及一种基于IOS系统的防录屏方法及装置。

背景技术

当视频在iOS上进行播放时,有多种途径可将该视频完整录制,市面上常见的录制方法包括采用IOS自带的QuickTime软件录屏、AirPlay投屏时同步录屏等,而上述录制方法容易被盗版者利用,这对于版权视频的拥有人或拥有企业而言,将产生巨大的资产损害或经济损失。

而当IOS版本低于IOS11时,没有直接的防录屏检测功能,目前通用的防录屏方案如下:

使用QuickTime录屏时,利用连接IOS设备后,IOS状态栏时间必定变为“9:41”(特性一)、本机时间是否与状态时间一致(特性二),结合特性一和特性二进行录屏甄别;

使用AirPlay投屏时,利用投屏监听API来进行录屏甄别。

以上方案虽然可行,但其仍然具有以下缺陷:

1、当盗版者刚好在9点41分进行录屏操作,因满足“本机时间与状态栏时间一致”的特点,此时是系统是无法得知盗版者是否正在录屏的,存在一分钟的黄金盗版时间;

2、因时间状态栏属于iOS系统中的非公开API,若持续调用,则极大可能在AppStore上架审核过程中,触发“Guideline 2.5.1 - Performance - SoftwareRequirements”条款而导致审核被拒;

3、不同的防录屏方案无法简单而高效的统一整合。

因此上述方案仍存在较大的优化空间。

发明内容

针对现有技术的不足,本发明提出一种基于IOS系统的防录屏方法,包括:

引入AVFoundation框架;

当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册;

在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象;

读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组;

针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象;

重复多次遍历AVAudioSessionPortDescription对象的porType属性;

根据porType属性对应的关键字符串值确定是否执行防录屏逻辑。

在其中一个实施例中,上述所述根据porType属性对应的关键字符串值确定是否执行防录屏逻辑的步骤,包括:

优先针对AirPlay和HDMI两种录屏事件进行判断;

若遍历中关键字符串值为“AirPlay”,则判断当前使用AirPlay输出线路,iOS设备正处于投屏状态,执行防录屏逻辑;

若遍历中关键字符串值为“HDMIOutput”,则判断当前使用HDMI输出线路,IOS设备连接高清数据线且处于读取数据的状态,执行防录屏逻辑。

在其中一个实施例中,上述所述执行防录屏逻辑的步骤之后,还包括:

确定AVAudioSessionPortDescription对象的porType属性的关键字符串变为Speaker后,撤销防录屏逻辑。

在其中一个实施例中,上述所述引入AVFoundation框架的步骤,包括:

使用命令,#import ,引入AVFoundation框架。

在其中一个实施例中,上述所述引入AVFoundation框架的步骤之后,还包括:

当类创建伊始,对IOS的版本进行检测。

在其中一个实施例中,上述所述当类创建伊始,对IOS的版本进行检测的步骤之后,还包括:

当检测IOS版本为IOS11以上版本时,针对UIScreenCapturedDidChangeNotification进行监听注册;

通过[UIScreenmainScreen].isCaptured该对象中的isCaptured属性,确定是否执行防录屏逻辑。

本发明还提供了一种基于IOS系统的防录屏装置,包括:

生成模块,用于引入AVFoundation框架;

第一监听模块,用于在检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册;

第一获取模块,用于在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象;

第二获取模块,用于读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组;

第三获取模块,用于针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象;

第四获取模块,用于重复多次遍历AVAudioSessionPortDescription对象的porType属性;

第一确定模块,用于根据porType属性对应的关键字符串值确定是否执行防录屏逻辑。

在其中一个实施例中,上述所述装置还包括:

第二监听模块,用于在检测IOS版本为IOS11以上版本时,针对UIScreenCapturedDidChangeNotification进行监听注册;

第二确定模块,用于通过[UIScreenmainScreen].isCaptured该对象中的isCaptured属性,确定是否执行防录屏逻辑。

本发明还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的基于IOS系统的防录屏方法。

本发明还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述的基于IOS系统的防录屏方法。

本发明实施例利用IOS版本低于IOS11时,“连接电脑使用MacQuickTime录屏”、“AirPlay投屏”等录屏操作,均将触发AVAudioSessionRouteChangeNotification监听回调的机制,通过引入AVFoundation框架;当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册;在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象;读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组;针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象;重复多次遍历AVAudioSessionPortDescription对象的porType属性;根据porType属性对应的关键字符串值确定是否执行防录屏逻辑,使得不同的防录屏方案可以通过同一套逻辑进行监听,通过简单代码实现不同防录屏方案高效的统一整合,本方案不存在录屏缝隙时间,且不会调用IOS私有的API,避免了被AppStore审核拒绝的潜在风险,可保证24小时全程防录屏,有效保护版权视频,避免因盗版行为带来的巨大的资产损害或经济损失。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例的基于IOS系统的防录屏方法的流程图;

图2为本发明第一实施例的S17的详细流程图;

图3为本发明第二实施例的基于IOS系统的防录屏方法的流程图;

图4为本发明第三实施例的基于IOS系统的防录屏装置的结构框图;

图5为本发明的又一实施方式的计算机内部构造示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

第一实施例:

请参照图1和图2所示,本发明实施例公开了一种基于IOS系统的防录屏方法,包括:

S11,引入AVFoundation框架。

AVFoundation是苹果在iOS和OS X系统中用于处理基于时间的媒体数据的框架,AVFoundation 没有直接的API,可判断是否使用Mac的QuickTime进行录屏,也没有直接的API,可判断是否使用 AirPlay投屏进行录屏,其本身并非用于防录屏监听。但经过长期科研实践,偶然发现AVFoundation 可获取当前的端口输出类型,我们通过端口输出类型,来更精准地判断当前iPhone的连接对象,AVFoundation框架的AVAudioSessionRouteChangeNotification可以用于低于IOS11版本的防录屏监听。

作为对本步骤的具体实现方案而非限定,本步骤S11,具体为:使用命令,#import,引入AVFoundation框架。

引入AVFoundation框架,且当类创建伊始时,本实施例对IOS的版本进行检测。类是一种实现信息封装的基础,包含数据说明和一组操作数据或传递消息的函数,本实施例中的类通常是视频类,其对应的视频包括但不限于图片和音频的结合、MTV、短视频和电影。

S12,当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册。

由于低于IOS11的系统版本不自带录屏功能,因此无论是“连接电脑使用MacQuickTime录屏”、“AirPlay投屏”等操作,均将触发AVAudioSessionRouteChangeNotification监听回调,此时针对AVAudioSessionRouteChangeNotification进行监听注册。

S13,在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象。

S14,读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组。

本步骤的输出线路数组均为AVAudioSessionPortDescription 类型。

S15,针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象。

本步骤的遍历操作通常为多次的,各次遍历时均会判断AVAudioSessionPortDescription对象的porType属性。

S16,重复多次遍历AVAudioSessionPortDescription对象的porType属性。

在发现AVFoundation框架的AVAudioSessionRouteChangeNotification可以用于低于IOS11版本的防录屏监听后,通过试验不同录屏场景,发现porType属性的关键字符串值会不同,因此可以通过确定porType属性的关键字符来充分利用 AVAudioSession,实现了各种场景的防录屏效果。

S17,根据porType属性对应的关键字符串值确定是否执行防录屏逻辑。

作为对本步骤的具体实现方案而非限定,防录屏逻辑包括但不限于弹出警告窗口、强制关闭当前视频、录入当前设备和/或投屏设备的基本信息和后台应用信息,并将上述信息发送至监控服务器等。

作为一种优选方案而非限定,本步骤S17,包括S171-S174,其中:

S171,优先针对AirPlay和HDMI两种录屏事件进行判断;

S172,若遍历中关键字符串值为“AirPlay”,则判断当前使用AirPlay输出线路,iOS设备正处于投屏状态,执行防录屏逻辑。

S173,若遍历中关键字符串值为“HDMIOutput”,则判断当前使用HDMI输出线路,IOS设备连接高清数据线且处于读取数据的状态,执行防录屏逻辑。

S174,确定AVAudioSessionPortDescription对象的porType属性的关键字符串变为Speaker后,撤销防录屏逻辑。

作为一种软件存在形式,本实施例的防录屏方法可以通过APP或者SDK代码的方式实现,实现方式灵活方便。

本发明实施例利用IOS版本低于IOS11时,“连接电脑使用MacQuickTime录屏”、“AirPlay投屏”等录屏操作,均将触发AVAudioSessionRouteChangeNotification监听回调的机制,通过引入AVFoundation框架;当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册;在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象;读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组;针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象;重复多次遍历AVAudioSessionPortDescription对象的porType属性;根据porType属性对应的关键字符串值确定是否执行防录屏逻辑,使得不同的防录屏方案可以通过同一套逻辑进行监听,通过简单代码实现不同防录屏方案高效的统一整合,本方案不存在录屏缝隙时间,且不会调用IOS私有的API,避免了被AppStore审核拒绝的潜在风险,可保证24小时全程防录屏,有效保护版权视频,避免因盗版行为带来的巨大的资产损害或经济损失。

第二实施例:

请参照图3所示,本发明实施例公开了另一种基于IOS系统的防录屏方法。

本实施例的基于IOS系统的防录屏方法包括:

S21,引入AVFoundation框架。

步骤S21与第一实施例的对应步骤相同,这里不再赘述。

S22,当检测IOS版本为IOS11以上版本时,针对UIScreenCapturedDidChangeNotification进行监听注册。

S23,通过[UIScreenmainScreen].isCaptured该对象中的isCaptured属性,确定是否执行防录屏逻辑。

当IOS系统版本是iOS11以上时,若盗版者有录屏操作,将触发 UIScreenCapturedDidChangeNotification 监听回调,此时可通过提取[UIScreenmainScreen].isCaptured该对象中的isCaptured属性,判断是否处于录屏状态。

S24,当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册。

S25,在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象。

S26,读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组。

S27,针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象。

S28,重复多次遍历AVAudioSessionPortDescription对象的porType属性。

S29,根据porType属性对应的关键字符串值确定是否执行防录屏逻辑。

步骤S24-S29与第一实施例的对应步骤相同,这里不再赘述。

本发明实施例还通过在检测到IOS版本为IOS11以上版本时,针对UIScreenCapturedDidChangeNotification进行监听注册,当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册,实现了对IOS11以上版本的视频录屏监听,使得所有IOS版本的防录屏方案可以通过同一套逻辑进行监听,通过简单代码实现不同防录屏方案高效的统一整合,有效保护版权视频,避免因盗版行为带来的巨大的资产损害或经济损失。

第三实施例:

请参照图4所示,本发明还提供了一种基于IOS系统的防录屏装置100,包括生成模块110、第一监听模块120、第一获取模块130、第二获取模块140、第三获取模块150、第四获取模块160和第一确定模块170,其中:

生成模块110,与第一监听模块120连接,用于引入AVFoundation框架;

第一监听模块120,与第一获取模块130连接,用于在检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册;

第一获取模块130,与第二获取模块140连接,用于在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象;

第二获取模块140,与第三获取模块150连接,用于读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组;

第三获取模块150,与第四获取模块连接,用于针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象;

第四获取模块160,与第一确定模块170连接,用于重复多次遍历AVAudioSessionPortDescription对象的porType属性;

第一确定模块170,用于根据porType属性对应的关键字符串值确定是否执行防录屏逻辑。

作为一种优选方案而非限定,防录屏装置100还包括第二监听模块180和第二确定模块190,其中:

第二监听模块180,与生成模块110和第二确定模块190连接,用于在检测IOS版本为IOS11以上版本时,针对UIScreenCapturedDidChangeNotification进行监听注册;

第二确定模块190,用于通过[UIScreenmainScreen].isCaptured该对象中的isCaptured属性,确定是否执行防录屏逻辑。

本实施例的模块与上述两个方法实施例的对应步骤相同,这里不再赘述。

本发明实施例利用IOS版本低于IOS11时,“连接电脑使用MacQuickTime录屏”、“AirPlay投屏”等录屏操作,均将触发AVAudioSessionRouteChangeNotification监听回调的机制,通过引入AVFoundation框架;当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册;在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象;读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组;针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象;重复多次遍历AVAudioSessionPortDescription对象的porType属性;根据porType属性对应的关键字符串值确定是否执行防录屏逻辑,使得不同的防录屏方案可以通过同一套逻辑进行监听,通过简单代码实现不同防录屏方案高效的统一整合,本方案不存在录屏缝隙时间,且不会调用IOS私有的API,避免了被AppStore审核拒绝的潜在风险,可保证24小时全程防录屏,有效保护版权视频,避免因盗版行为带来的巨大的资产损害或经济损失。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述各实施例中的基于IOS系统的防录屏方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各基于IOS系统的防录屏方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、终端、或者网络设备等)执行本发明各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、RAM、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

与上述的计算机存储介质对应的是,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行程序时实现如上述各实施例中的基于IOS系统的防录屏方法。

该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于IOS系统的防录屏方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本发明实施例利用IOS版本低于IOS11时,“连接电脑使用MacQuickTime录屏”、“AirPlay投屏”等录屏操作,均将触发AVAudioSessionRouteChangeNotification监听回调的机制,通过引入AVFoundation框架;当检测IOS版本低于IOS11时,针对AVAudioSessionRouteChangeNotification进行监听注册;在调用[AVAudioSessionsharedInstance].currentRoute获取到AVAudioSession单例会话后,读取AVAudioSession单例会话的currentRoute属性以取得AVAudioSessionRouteDescription对象;读取AVAudioSessionRouteDescription对象的outputs属性以取得当前输出线路数组;针对outputs数组进行遍历,访问每一个AVAudioSessionPortDescription对象;重复多次遍历AVAudioSessionPortDescription对象的porType属性;根据porType属性对应的关键字符串值确定是否执行防录屏逻辑,使得不同的防录屏方案可以通过同一套逻辑进行监听,通过简单代码实现不同防录屏方案高效的统一整合,本方案不存在录屏缝隙时间,且不会调用IOS私有的API,避免了被AppStore审核拒绝的潜在风险,可保证24小时全程防录屏,有效保护版权视频,避免因盗版行为带来的巨大的资产损害或经济损失。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

相关技术
  • iOS系统中陀螺仪事件的控制方法及装置
  • IOS系统性能数据的采集方法及装置
  • 防除冰装置及基于该装置的防除冰控制方法
  • 一种基于IOS系统的录屏直播方法、装置、设备及存储介质
  • 一种基于IOS系统的游戏屏幕录屏方法及装置
技术分类

06120116140770