微信小程序设置某个页面防截屏/录屏

Android防截屏录屏

关于防截屏录屏,官方给出的方案是wx.setVisualEffectOnCapture(Object object)

注意:1、仅支持Android

2、基础库 不低于2.21.3

  onShow() {
    if (wx.setVisualEffectOnCapture) {
      wx.setVisualEffectOnCapture({
        visualEffect: 'hidden',
        complete: function (res) {
        }
      })
    }
  }

如果只在页面A的onShow()中设置wx.setVisualEffectOnCapture不做其他出来,会发现,只要在页面A截屏后,小程序其余页面都无法截屏了。所以我们还需要做其余操作:

  // 页面隐藏和销毁时需要释放防截屏录屏设置
  onHide(){
    if (wx.setVisualEffectOnCapture) {
      wx.setVisualEffectOnCapture({
        visualEffect: 'none',
        complete: function(res) {
        }
      })
    }
  },
  onUnload(){
    if (wx.setVisualEffectOnCapture) {
      wx.setVisualEffectOnCapture({
        visualEffect: 'none',
        complete: function(res) {
        }
      })
    }
  }

IOS防录屏

官方给出的方案wx.onScreenRecordingStateChanged(function listener)

注意:1、仅支持IOS

2、基础库2.24.0开始支持

onLoad(){
    if(wx.getScreenRecordingState){
        wx.getScreenRecordingState({
            success: res => {
                console.log(res.state)
            }
        })
    }
    if(wx.onScreenRecordingStateChanged){
        wx.onScreenRecordingStateChanged(res => {
            console.log(res.state)
        }
    }
}

同上,隐藏或销毁当前页面时需要做解除当前防录屏的设置

onHide(){
    if(wx.offScreenRecordingStateChanged){
        // 取消录屏监听事件
        wx.offScreenRecordingStateChanged()
    }
},
onUnload(){
    if(wx.offScreenRecordingStateChanged){
        // 取消录屏监听事件
        wx.offScreenRecordingStateChanged()
    }
}

猜你喜欢

转载自blog.csdn.net/ly2983068126/article/details/128728124