uniapp小程序隐私协议弹窗组件

为规范开发者的用户个人信息处理行为,保障用户的合法权益,自2023年9月15日起,对于涉及处理用户个人信息的小程序开发者,微信要求,仅当开发者主动向平台同步用户已阅读并同意了小程序的隐私保护指引等信息处理规则后,方可调用微信提供的隐私接口。

官方文档

用户隐私保护

效果展示

原插件地址

alt

uniapp的操作指引

1、修改文件mainfest

新增参数 "__usePrivacyCheck__" : true, 如图

alt

2、新建组件

新建目录文件为 components/privacy-popup/privacy-popup.vue

<template>
 <view v-if="showPrivacy" :class="privacyClass">
  <view :class="contentClass">
   <view class="title">用户隐私保护指引</view>
   <view class="des">
    感谢您选择使用我们的小程序,我们非常重视您的个人信息安全和隐私保护。使用我们的产品前,请您仔细阅读“
    <text class="link" @tap="openPrivacyContract">{{privacyContractName}} </text>”,
    如您同意此隐私保护指引,请点击同意按钮,开始使用此小程序,我们将尽全力保护您的个人信息及合法权益,感谢您的信任!<br />
   </view>
   <view class="btns">
    <button class="item reject" @tap="exitMiniProgram">拒绝</button>
    <button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization"
     @agreeprivacyauthorization="handleAgreePrivacyAuthorization">
同意</button>
   </view>
  </view>
 </view>

</template>

<script>
 export default {
  name: 'PrivacyPopup',
  data() {
   return {
    isRead: false,
    showPrivacy: false,
    privacyContractName: '',
    resolvePrivacyAuthorization: null,
   };
  },
  props: {
   position: {
    type: String,
    default: 'center'
   }
  },
  computed: {
   privacyClass() {
    return this.position === 'bottom' ? 'privacy privacy-bottom' : 'privacy';
   },
   contentClass() {
    return this.position === 'bottom' ? 'content content-bottom' : 'content';
   }
  },
  mounted() {
   if (wx.onNeedPrivacyAuthorization) {
    wx.onNeedPrivacyAuthorization((resolve) => {
     this.resolvePrivacyAuthorization = resolve;
    });
   }

   if (wx.getPrivacySetting) {
    wx.getPrivacySetting({
     success: (res) => {
      console.log(res, 'getPrivacySetting');
      if (res.needAuthorization) {
       this.privacyContractName = res.privacyContractName;
       this.showPrivacy = true;
      }
     },
    });
   }
  },

  methods: {
   openPrivacyContract() {
    wx.openPrivacyContract({
     success: () => {
      this.isRead = true;
     },
     fail: () => {
      uni.showToast({
       title: '遇到错误',
       icon: 'error',
      });
     },
    });
   },
   exitMiniProgram() {

    wx.exitMiniProgram();

   },
   handleAgreePrivacyAuthorization() {
    this.showPrivacy = false;
    if (typeof this.resolvePrivacyAuthorization === 'function') {
     this.resolvePrivacyAuthorization({
      buttonId: 'agree-btn',
      event: 'agree',
     });
    }
   },
  },
 };
</
script>

<style scoped>
 .privacy {
  position: fixed;
  top0;
  right0;
  bottom0;
  left0;
  backgroundrgba(000, .5);
  z-index9999999;
  display: flex;
  align-items: center;
  justify-content: center;
 }

 .privacy-bottom {
  align-items: flex-end;
 }

 .content {
  width632rpx;
  padding48rpx;
  box-sizing: border-box;
  background#fff;
  border-radius16rpx;
 }

 .content-bottom {
  position: absolute;
  bottom0;
  width96%;
  padding36rpx;
  padding-bottomconstant(safe-area-inset-bottom);
  padding-bottomenv(safe-area-inset-bottom);
  border-radius16rpx 16rpx 0 0;
 }

 .content .title {
  text-align: center;
  color#333;
  font-weight: bold;
  font-size32rpx;
 }

 .content .des {
  font-size26rpx;
  color#666;
  margin-top40rpx;
  text-align: justify;
  line-height1.6;
 }

 .content .des .link {
  color#07c160;
  text-decoration: underline;
 }

 .btns {
  margin-top48rpx;
  margin-bottom12rpx;
  display: flex;
 }

 .btns .item {
  width200rpx;
  height72rpx;
  overflow: visible;
  display: flex;
  align-items: center;

  justify-content: center;
  /* border-radius: 16rpx; */
  box-sizing: border-box;
  border: none !important;
 }

 .btns .reject {
  background#f4f4f5;
  color#666;
  font-size14px;
  font-weight300;
  margin-right16rpx;
 }

 .btns .agree {
  width320rpx;
  background#07c160;
  color#fff;
  font-size16px;

 }

 .privacy-bottom .btns .agree {
  width440rpx;

 }
</style>


3、使用方式

在index.vue中添加下面代码

<privacy-popup ref="privacyComponent" position="center" ></privacy-popup> 

4、如何取消授权进行调试

  • 微信中「微信下拉-最近-最近使用的小程序」中删除小程序可取消授权。
  • 开发者工具中「清除模拟器缓存-清除授权数据」可取消授权。
alt

原文链接: uniapp小程序隐私协议弹窗组件

本文由 mdnice 多平台发布

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值