uniapp 微信小程序禁止录屏(兼容ios,安卓)

1、先在data里面定义一个定时器

timer:null

2、在onload 或者onshow 里面配置如下代码

onLoad(e) {
  //'videoPlayer' 是video标签里配置的id
	this.videoContext = uni.createVideoContext('videoPlayer', this);
	
	//防录屏/截屏
	let platform = uni.getSystemInfoSync().platform;
		console.log(platform,'设备标识')
		//安卓手机
	if (platform === "android") {
		console.log(platform,'设备标识111---')
		if (wx.setVisualEffectOnCapture) {
				wx.setVisualEffectOnCapture({
				visualEffect: 'hidden',
				success: (res)=>{
					console.log('success录屏',res);
					}
			})
		}
		} else {	
			//苹果手机
			this.timer = setInterval(()=>{
				wx.getScreenRecordingState({
					success: (res)=>{
						console.log('success录屏22',res);
						if(res.state=='on'){
							this.videoContext.pause() //暂停视频播放
							uni.showModal({
								content:'此页面不允许录屏',
								showCancel:false,
								success: (res) => {
									if(res.confirm){
										uni.navigateBack()
									}
								}
							})
						}
					}
				})
			},2000)					
		}		
},

3、页面结束要关闭定时器

onUnload(){
		
	if (wx.setVisualEffectOnCapture) {
			wx.setVisualEffectOnCapture({
			visualEffect: 'none',
			success: (res)=>{
				console.log('success',res);
			}
		})
	}
	if(this.timer) {  
			clearTimeout(this.timer);  
			this.timer = null;  
		}  
	
},

注意:

1、wx.setVisualEffectOnCapture  是适应安卓手机的,实时监听页面录屏的动作,同时也可适配ios16 以上的版本,iOS16一下的不兼容,不生效,所以要用wx.getScreenRecordingState来兼容所有iOS手机,这个方法是监测苹果手机是否开启录屏

2、禁止录屏以后,安卓机是录得黑屏,有的机型虽然录得是黑屏,但可能还有声音,可以试一下

在pages.json这个文件里配置禁止录屏的页面那里配置 visualEffectInBackground:hidden

另外感谢这位大佬的分享,https://juejin.cn/post/7240419809178566714

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值