uniapp开发的app如何禁止用户录屏和截屏操作?
网友回复
防止用户截屏录屏有几种方式
1、当检测到截屏录屏操作时候,增加提示和水印
2、当检测截屏录屏操作时候,暴力删除相册录屏截屏内容
3、利用系统内置让截屏内容变成空白
下满我们来说说安卓和ios在uniapp中开发怎么实现禁止用户截屏录屏。
1、andriod中使用uniapp防止用户截屏录屏方法
首先保证页面是全屏显示,然后执行下面代码即可实现:
var activity = plus.android.runtimeMainActivity() plus.android.invoke(plus.android.invoke(activity, "getWindow"), "addFlags", 0x00002000)
如何全局禁止截屏录屏的话直接在app.vue的onlaunch中设置。
完整的代码<template> <view> <button @tap="addFlags">禁止截屏录屏</button> <button @tap="clearFlags">可以截屏录屏</button> </view> </template> <script> export default { data() { return { } }, onUnload() { plus.navigator.setFullscreen(false) // 不行就多调用几次 this.clearFlags() }, onLoad(option) { plus.navigator.setFullscreen(true) this.addFlags() }, onBackPress(e) { if (e.from === 'backbutton') { uni.navigateBack(); return true; } }, methods: { // 禁止截屏 addFlags() { // #ifdef APP-PLUS let osname = plus.os.name if (osname == "Android") { var activity = plus.android.runtimeMainActivity() plus.android.invoke(plus.android.invoke(activity, "getWindow"), "addFlags", 0x00002000) } // #endif }, // 允许截屏 clearFlags() { // #ifdef APP-PLUS let osname = plus.os.name if (osname == "Android") { var activity = plus.android.runtimeMainActivity() plus.android.invoke(plus.android.invoke(activity, "getWindow"), "clearFlags", 0x00002000) } // #endif } } } </script> <style> </style>2、如何ios的话UITextField 的 isSecureTextEntry 设置为 true 的时候,会隐去输入的文案用 圆点 替代。
并且在进行录屏或者截屏的时候都会被系统隐去,利用这个特性,我们可以开发一款自己的ios插件,然后导入到uniapp中进行调用
开源免费的项目:https://github.com/RyukieSama/Swifty
收费的插件也有:https://screenshieldkit.com/