uniapp和微信小程序隐私协议弹框

主要是介绍了如何在uniapp项目和原生小程序项目中,添加"隐私协议"交互弹框,这个是微信官网新的要求

基础介绍

为了规范用户个人信息处理行为,微信官方需要我们在调用涉及到用户隐私功能时,先弹出一个"隐私弹框",与用户进行交互,让用户同意才行。

具体可查看小程序隐私协议开发指南

当然,这个功能可以自己定义实现,选择触发显示时机

也可以等官方发布(2023/10/17),使用官方默认的弹框

PS:我是在必须适配的最后日期前,就做完功能,发布成功了;然后官方在截止时间前,才发布新通知,开发者可以无需修改,自动使用官方默认配置。这是加急做了一个无用功能,成了大冤种了。。。

uniapp 微信小程序添加隐私协议弹框

  1. manifest.json 中添加__usePrivacyCheck__配置
json 复制代码
{
  "mp-weixin": {
    "__usePrivacyCheck__": true
  }
}
  1. 新增一个 Privacy 组件,完成弹框和功能
html 复制代码
<!-- privacy.vue -->
<template>
  <view class="privacy" v-if="showPrivacy">
    <view class="content">
      <view class="title">隐私保护指引</view>
      <view class="des">
        请您仔细阅读并充分理解<text
          class="link"
          @click="handleOpenPrivacyContract"
          >{{ privacyContractName }}</text
        >
        ,如您同意前述协议的全部内容,请点击"同意"开始使用。<text class="cancel"
          >如您不同意,将被限制使用部分功能,或将在您使用具体功能前再次询问以取得您的授权同意。</text
        >
      </view>
      <view class="btns">
        <button class="reject" @click="handleDisagree">拒绝</button>
        <button
          class="agree"
          open-type="agreePrivacyAuthorization"
          @agreeprivacyauthorization="handleAgreePrivacyAuthorization"
        >
          同意
        </button>
      </view>
    </view>
    <view
      class="iconfont icon-close"
      @click="handleDisagree"
    ></view>
  </view>
</template>

(1)判断是否需要展示弹框

通过 wx.getPrivacySetting 来获取,返回结果为{ needAuthorization: true, privacyContractName: '《xxx 隐私保护指引》' }

包括是否需要展示的字段needAuthorization(注意:在微信模拟器中,返回的一直是 false;在真机上才会显示true,而且微信版本要大于2.32.3),以及隐私协议名称privacyContractName

注意:先通过 wx.getAppBaseInfo().SDKVersion获取版本号,判断是否大于 2.32.3

js 复制代码
onPageShow() {
  wx.getPrivacySetting({
    success: (res) => {
      console.log("cj隐私配置", res);
      if (res.errMsg == "getPrivacySetting:ok") {
        this.privacyContractName = res.privacyContractName;
        this.showPrivacy = res.needAuthorization
      }
    },
  });
}

(2)打开隐私协议页面

点击隐私协议名称时,可以打开指引页,展示具体的使用权限,供用户查看。

注意:这个页面不用我们做,开发者只需要调用官方接口wx.openPrivacyContract就行

js 复制代码
handleOpenPrivacyContract() {
  wx.openPrivacyContract({
    fail: () => {}
  })
}

(3)不同意或者关闭事件:直接关闭弹框就行,等待之后进入再触发,知道用户同意为止。

官方规定:用户不同意时,不能禁止用户使用其他功能,所以不能直接关闭小程序。

js 复制代码
handleDisagree() {
  this.showPrivacy = false;
}

(4)同意事件

在按钮上定义open-type="agreePrivacyAuthorization",绑定事件@agreeprivacyauthorization就行。

同意成功后,也是关闭弹框,同上处理

  1. 在需要使用的页面中引入即可,我是在"我的"页面引入的,需要展示头像,使用了微信获取用户信息接口wx.getUserInfo,涉及到用户隐私

原生小程序添加隐私协议弹框

  1. app.json 中开启__usePrivacyCheck__配置,设置为 true
json 复制代码
{
  "__usePrivacyCheck__": true
}
  1. 新增一个 Privacy 组件,完成弹框样式
html 复制代码
<!-- privacy.wxml -->
<view class="privacy" wx:if="{{showPrivacy}}">
  <view class="content">
    <view class="title">隐私保护指引</view>
    <view class="des">
      请您仔细阅读并充分理解
      <text class="link" bindtap="handleOpenPrivacyContract"
        >{{privacyContractName}}</text
      >
      ,如您同意前述协议的全部内容,请点击"同意"开始使用。
      <text class="cancel"
        >如您不同意,将被限制使用部分功能,或将在您使用具体功能前再次询问以取得您的授权同意。</text
      >
    </view>
    <view class="btns">
      <button class="reject" bindtap="handleDisagree">不同意</button>
      <button
        id="agree-btn"
        class="agree"
        open-type="agreePrivacyAuthorization"
        bindagreeprivacyauthorization="handleAgreePrivacyAuthorization"
      >
        同意
      </button>
    </view>
    <view
      class="iconfont icon-close"
      bindtap="handleDisagree"
    ></view>
  </view>
</view>

判断是否需要展示弹框

js 复制代码
pageLifetimes: {
  show() {
    wx.getPrivacySetting({
      success(res) {
        console.log("cj隐私配置", res);
        if (res.errMsg == "getPrivacySetting:ok") {
          this.setData({
            showPrivacy: res.needAuthorization,
            privacyContractName: res.privacyContractName,
          });
        }
      },
    });
  }
}

其他的和uniapp的处理基本一样,参照上面uniapp处理就行

相关推荐
moxiaoran5753几秒前
Spring Cloud Gateway 动态路由实现方案
运维·服务器·前端
市民中心的蟋蟀几秒前
第十一章 这三个全局状态管理库之间的共性与差异 【上】
前端·javascript·react.js
vvilkim14 分钟前
Flutter 常用组件详解:Text、Button、Image、ListView 和 GridView
前端·flutter
vvilkim21 分钟前
Flutter 命名路由与参数传递完全指南
前端·flutter
NA22 分钟前
redis
前端
你真好看_22 分钟前
6年低代码 零代码 系统二开人员的角度,看低代码 到底有多好用!!!
前端
JC_You_Know29 分钟前
边缘计算一:现代前端架构演进图谱 —— 从 SPA 到边缘渲染
前端·人工智能·边缘计算
DoraBigHead32 分钟前
深入 JavaScript 作用域机制:透视 V8 引擎背后的执行秘密
前端·javascript
Tu_Jipang33 分钟前
前端从零搭建企业级后台系统实战指南
前端
快起来别睡了34 分钟前
CSS定位的奥秘:从文档流到position,一文讲透前端布局核心!
前端·css·程序员