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处理就行

相关推荐
崔庆才丨静觅3 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60614 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了4 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅4 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅4 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅5 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment5 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅5 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊5 小时前
jwt介绍
前端
爱敲代码的小鱼5 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax