DRMScreenShot

概述

DRMScreenShot简介

DRMScreenShot插件封提供了 iOS 端禁止截屏的功能。在iOS开发的一些业务场景中,可能有一些敏感信息(如付款的二维码等),我们不希望被随意传播。应用内禁止截屏,可以一定程度上,提高敏感信息被传播的门槛(如用另外一台手机拍照实现手机间的传播)。

iOS系统的特殊性主要有两种禁止截屏的方案:

  • 1,监听截屏事件,给用户相应提示
  • 2,让用户安装禁用屏幕快照和屏幕录制的配置文件。

两者均有各自缺点。由于 iOS 支持 DRM(数字版权管理),可基于 DRM 开发出第三种禁止截屏方案。

DRM 是指当你播放一个加密了的hls流时进行截屏,该视频区域会显示空白。所以,可以把一个敏感信息的区域截屏生成图片,然后由截屏图片生成一个视频,转化为带DRM加密的视频,然后播放。用户视觉效果上没多大影响(仅对静态的页面区域比如一个二维码)。但是当用户执行截屏操作的时候,该区域就会消失,达到防止敏感内容落地的目的。本插件即实现了此方案。

注意:本插件仅支持 iOS 13.0 及以上系统

插件接口

open

打开禁止截屏的区域

open({params}, callback(ret))

params

rect:

  • 类型:JSON 类型
  • 描述:(可选项)禁止截屏的区域的位置及大小
  • 内部字段:
{
    x: 0,             //(可选项)数字类型;插件左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
    y: 0,             //(可选项)数字类型;插件左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
    w:0,              //(可选项)数字类型;插件宽度(相对于所属的 Window 或 Frame;默认0
    h:0               //(可选项)数字类型;插件高度(相对于所属的 Window 或 Frame;默认0
}

videoPath:

  • 类型:字符串类型
  • 描述:(可选项)禁止截屏区域生成的视频,要求本地路径(fs://、widget://),本参数与image->path参数互斥,都有值时以本参数为准

image:

  • 类型:JSON 类型
  • 描述:(可选项)禁止截屏的区域生成的截图,videoPath有值时忽略本参数。
  • 内部字段:
{
    w:400,         //数字类型;禁止截屏图片的宽,必须16的倍数
    h:200          //数字类型;禁止截屏图片的高,必须16的倍数
    path:''        //字符串类型;图片的路径,要求本地路径(fs://、widget://)。本参数与videoPath参数互斥,都有值时以videoPath为准
}

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:    //布尔类型;是否开启成功
}

示例代码

var name = api.require('DRMScreenShot');
name.open({
    rect:{
        x:100,
        y:300,
        w:120,
        h:120
    },
    videoPath:'',
    image:{
        width:400,
        height:200,
        path:'widget://res/image.jpg',
    } 
}, function(ret) {
    if (ret) {
       api.alert({msg: JSON.stringify(ret)});
    }
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

close

关闭

close()

示例代码

var name = api.require('DRMScreenShot');
name.close();

可用性

iOS 系统

可提供的 1.0.0 及更高版本

hide

隐藏

hide( )

示例代码

var name = api.require('DRMScreenShot');
name.hide();

可用性

iOS 系统

可提供的 1.0.0 及更高版本

show

显示

show( )

示例代码

var name = api.require('DRMScreenShot');
name.show();

可用性

iOS系统

可提供的 1.0.0 及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/04/24