当前位置: 首页 > news >正文

uinapp微信小程序隐私政策授权

🚀 隐私弹窗效果图:

在这里插入图片描述

1、启用隐私相关功能在manifest.json文件中配置 usePrivacyCheck: true
"mp-weixin" : {"__usePrivacyCheck__" : true,
},
2、创建组件
<template><view><!-- 隐私政策弹窗 --><uni-popup ref="popup"><view class="popup-wrap"><view class="pop-title">用户隐私保护提示</view><view class="popup-txt">感谢您使用本小程序,在使用前您应当阅读井同意<text class="blue-color" @click="handleOpenPrivacyContract">{{privacyContractName}}</text>,当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。</view><view class="popup-bot"><button id="disagree-btn" type="default" @click="handleDisagree">不同意</button><button id="agree-btn" type="primary" open-type="agreePrivacyAuthorization"@agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意并继续</button></view></view></uni-popup></view>
</template><script>export default {name: "privacyPopup",data() {return {privacyContractName: "" //协议名称};},mounted() {this.checkPrivacy()},methods: {// 判断是否授权协议checkPrivacy() {return new Promise((resolve,reject) => {uni.getPrivacySetting({success: res => {if (res.needAuthorization) {this.privacyContractName = res.privacyContractName;this.$refs.popup.open('center')} else {resolve(res)}},fail: (err) => {reject(err)}})})},// 关闭协议handleDisagree(e) {this.$refs.popup.close()},handleAgreePrivacyAuthorization(res) {// 用户同意隐私协议事件回调// 用户点击了同意,之后所有已声明过的隐私接口和组件都可以调用了this.$refs.popup.close()//通知父组件this.$emit("agreePrivacy")},handleOpenPrivacyContract() {// 打开隐私协议页面uni.openPrivacyContract({success: () => {}, // 打开成功fail: () => {}, // 打开失败complete: (res) => {console.log(res, "openPrivacyContract complete");}})},}}
</script><style lang="scss" scoped>.popup-wrap {width: 540upx;box-sizing: border-box;padding: 42upx;background: white;border-radius: 30upx;.pop-title {text-align: center;font-size: 31upx;color: #000;font-weight: bold;margin-bottom: 20upx;}.blue-color {color: rgba(39, 152, 240, 1);}.popup-txt {line-height: 48upx;font-size: 28upx;}.popup-bot {display: flex;justify-content: space-between;align-items: center;margin-top: 30upx;>button {color: #FFF;font-size: 26rpx;font-weight: 500;line-height: 80rpx;width: 46%;text-align: center;height: 80rpx;border-radius: 16rpx;border: none;background: #07c160;}>button:nth-of-type(1){color: #07c160;background: #f2f2f2;}}}
</style>
3、组件使用
<privacyPopup @agreePrivacy="执行同意协议后的逻辑"></privacyPopup>

🚀 扩展:

因小程序中各个地方都会涉及到授权问题,依次引入组件过繁琐
1、可以将组件放置App.vue页面
2、通过vuex进入监听全局是否需要弹窗授权,可利用vux state变量进行触发
3、写一个公共方法判断是否授权协议去设置vuex即可

相关文章:

  • httpclient工具类(支持泛型转换)
  • Vue3.0 provide与inject依赖注入:VCA
  • 线程同步——互斥量解锁、解锁
  • Python教程---Python交互界面
  • idea 配置checkstyle全过程
  • 在PyCharm中直接启动mitmproxy并自动打开关闭系统代理
  • 采用XML作为GUI描述语言
  • 本地idea远程调试服务器程序
  • 隐私安全|隐私安全已从国家法律法规转向商业企业应用,如何理解以及落地建设,相信大家正在经历隐私安全的困扰
  • 性能优于BERT的FLAIR:一篇文章入门Flair模型
  • MapReduce WordCount程序实践(IDEA版)
  • 使用vscode开发uniapp项目常用的辅助插件,提升开发效率
  • github使用教程
  • 【Redis】Redis实现分布式锁
  • COCOS2DX3.17.2 Android升级targetSDK30问题解决方案
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Angular 响应式表单 基础例子
  • bearychat的java client
  • DOM的那些事
  • download使用浅析
  • Fundebug计费标准解释:事件数是如何定义的?
  • HTTP中GET与POST的区别 99%的错误认识
  • Java多态
  • js面向对象
  • Mocha测试初探
  • nodejs:开发并发布一个nodejs包
  • react-native 安卓真机环境搭建
  • scrapy学习之路4(itemloder的使用)
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Web Storage相关
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 两列自适应布局方案整理
  • 码农张的Bug人生 - 初来乍到
  • 码农张的Bug人生 - 见面之礼
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 容器服务kubernetes弹性伸缩高级用法
  • 深度学习在携程攻略社区的应用
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 主流的CSS水平和垂直居中技术大全
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • !!Dom4j 学习笔记
  • "无招胜有招"nbsp;史上最全的互…
  • # centos7下FFmpeg环境部署记录
  • #android不同版本废弃api,新api。
  • (poj1.3.2)1791(构造法模拟)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (三)终结任务
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net Web窗口页属性
  • .net 中viewstate的原理和使用
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET业务框架的构建
  • .NET中GET与SET的用法