uni-app 隐私合规检测 com.taobao.weex 频繁获取剪切板
uni-app 隐私合规检测 com.taobao.weex 频繁获取剪切板
项目属性 | 值 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | macOS 15.1.1 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.36 |
手机系统 | Android |
手机系统版本号 | Android 15 |
手机厂商 | 小米 |
手机机型 | 小米15pro |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
at android.content.ClipboardManager.getPrimaryClip(ClipboardManager.java:120)
at com.taobao.weex.appfram.clipboard.WXClipboardModule.getString(Unknown Source:20)
at com.taobao.weex.bridge.MethodInvoker.invoke(Unknown Source:2)
at com.taobao.weex.bridge.NativeInvokeHelper$2.run(Unknown Source:33)
at com.taobao.weex.common.WXThread$SafeRunnable.run(Unknown Source:13)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6495)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
操作步骤:
打开APP,应用启动后弹出原声隐私政策提示框,点击不同意后跳转到首页,不操作应用,放置10分钟发现权限使用记录中仍然有读取剪切板信息的请求。
预期结果:
不授权则不允许使用读取剪切板
实际结果:
不授权仍然读取了剪切板
bug描述:
应用隐私点击不同意后,此时plus.runtime.isAgreePrivacy的值为false,但仍然频繁获取剪切版信息(见附件)
{
"version": "1",
"prompt": "template",
"title": "隐私权政策提示",
"message": "为了更好地保护您的个人信息安全,请您仔细阅读并理解我们最新更新的xxxx",
"buttonRefuse": "不同意,继续浏览",
"buttonAccept": "同意",
"hrefLoader": "default",
"backToExit": "false",
"disagreeMode": {
"support": true,
"loadNativePlugins": false,
"visitorEntry": false,
"showAlways": true
},
"styles": {
"backgroundColor": "#ffffff",
"borderRadius": "24px",
"title": {
"color": "#502314"
},
"buttonAccept": {
"color": "#FF8732",
"borderRadius": "24px"
},
"buttonRefuse": {
"color": "#502314",
"borderRadius": "24px"
},
"buttonVisitor": {
"color": "#502314"
}
}
}
1 回复
在处理 uni-app
隐私合规问题时,特别是针对 com.taobao.weex
组件频繁获取剪切板内容的情况,首先需要明确的是,频繁的剪切板访问可能违反了隐私政策,尤其是在未经用户明确同意的情况下。为了解决这个问题,我们需要在代码中添加适当的控制和监测机制。
以下是一个基于 uni-app
的代码示例,用于限制和监控对剪切板的访问。这里假设你正在使用 weex
组件,并且需要控制其对剪切板的访问频率。
- 引入必要的模块:
// 引入uni-app的剪切板模块
const clipboard = uni.getClipboardData();
- 封装剪切板访问函数:
let lastAccessTime = 0; // 上次访问时间戳
const ACCESS_INTERVAL = 60000; // 访问间隔,单位毫秒(这里设置为1分钟)
function safeGetClipboardData() {
const currentTime = Date.now();
if (currentTime - lastAccessTime >= ACCESS_INTERVAL) {
lastAccessTime = currentTime;
return clipboard({
success: function (res) {
console.log('剪切板内容:', res.data);
// 在这里处理剪切板内容
},
fail: function (err) {
console.error('获取剪切板内容失败:', err);
}
});
} else {
console.warn('剪切板访问过于频繁,请稍后重试');
}
}
- 在组件或页面中使用:
<template>
<view>
<button @click="handleButtonClick">获取剪切板内容</button>
</view>
</template>
<script>
export default {
methods: {
handleButtonClick() {
safeGetClipboardData();
}
}
}
</script>
- 增加日志记录(可选):
为了更好地监控和调试,你可以增加日志记录功能,记录每次访问剪切板的时间、结果等信息。
function logClipboardAccess(success, data) {
const logEntry = {
timestamp: Date.now(),
success: success,
data: data || 'N/A'
};
// 将logEntry发送到服务器或保存到本地日志文件中
console.log('剪切板访问日志:', logEntry);
}
// 在safeGetClipboardData的success和fail回调中加入logClipboardAccess调用
通过上述代码,你可以有效地控制和监测对剪切板的访问频率,从而确保应用符合隐私合规要求。注意,实际应用中可能还需要根据具体需求调整访问间隔和日志记录策略。