+
80
-

uniapp开发的app如何禁止用户录屏和截屏操作?

uni

uniapp开发的app如何禁止用户录屏和截屏操作?


网友回复

+
0
-

防止用户截屏录屏有几种方式

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/

800_auto

我知道答案,我要回答