uniapp小程序 - 隐私协议保护指引接入教程

文章目录

      • 前提:`__usePrivacyCheck__: true`
      • 步骤一、封装弹窗组件
      • 步骤二、单个页面引用
          • 一、被动监听
          • 二、主动查询

前言:官方发布公告,自2023年9月15日起,对于涉及处理用户个人信息的小程序开发者,仅当开发者主动向平台同步用户已阅读并同意了小程序的隐私保护指引等信息处理规则后,方可调用微信提供的隐私接口。
所以:9月15号之前,涉及到用户隐私的小程序,需要整改,否则将会停止部分涉及隐私的功能使用。

涉及到的隐私接口:小程序用户隐私保护指引内容介绍
官方文档:小程序隐私协议开发指南

注:基于官方的开发指南,有两种处理方案,一种主动查询,一种被动监听,我在自己的项目里运用的是 被动监听,下面给出具体实现方案,大家可以根据自己的需求进行开发。

前提:__usePrivacyCheck__: true

  1. 在 2023年9月15号之前,在 app.json 中配置 __usePrivacyCheck__: true 后,会启用隐私相关功能,如果不配置或者配置为 false 则不会启用。
  2. 在 2023年9月15号之后,不论 app.json 中是否有配置 __usePrivacyCheck__,隐私相关功能都会启用。

so,9月15号之前调试该功能时,需要配置 __usePrivacyCheck__: true,uniapp项目如下实例:

在这里插入图片描述

步骤一、封装弹窗组件

:本项目是用uniapp写的,封装了一个隐私协议弹窗组件,哪个页面需要直接引入即可,新建 showPrivacyAgreement.vue 组件.
在这里插入图片描述
showPrivacyAgreement.vue 文件

<template><uni-popup ref="privacyPopup" type="center" :is-mask-click="true"><view class="privacyPopup"><view class="title"><view class="title_circle"></view><view>惠享服务圈</view></view><view class="content_pri"><text>在你使用【惠享服务圈】服务之前,请仔细阅读</text><text style="color: #1793ee;" @click="goToPrivacy">《惠享服务圈小程序隐私保护指引》</text><text>如你同意惠享服务圈小程序隐私保护指引,请点击“同意”开始使用【惠享服务圈】。</text></view><view class="pri_btn"><button class="confuse_btn" @click="confusePrivacy">拒绝</button><button class="confirm_btn" id="agree-btn" open-type="agreePrivacyAuthorization" @agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button></view></view></uni-popup>
</template>
<script>export default {data(){return{}},methods:{init(resolve){this.$refs.privacyPopup.open()this.resolvePrivacyAuthorization = resolve},// 打开隐私协议goToPrivacy(){wx.openPrivacyContract({success: () => {console.log('打开成功');}, // 打开成功fail: () => {uni.showToast({title:'打开失败,稍后重试',icon: 'none'})} // 打开失败})},// 拒绝confusePrivacy(){this.$refs.privacyPopup.close()this.resolvePrivacyAuthorization({ event:'disagree' })},// 同意handleAgreePrivacyAuthorization(){// 告知平台用户已经同意,参数传同意按钮的idthis.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' })this.$refs.privacyPopup.close()}}}
</script>
<style>*{box-sizing: border-box;}.privacyPopup{width: 520rpx;/* height: 500rpx; */background-color: #fff;border-radius: 50rpx;padding: 20rpx 40rpx;}.title{display: flex;align-items: center;justify-content: start;margin: 20rpx 0;font-size: 38rpx;font-weight: 600;}.title .title_circle{width: 60rpx;height: 60rpx;background-color: #efefef;border-radius: 50%;margin-right: 20rpx;}.content_pri{width: 480rpx;margin: 0 auto;font-size: 34rpx;line-height: 1.5;}.pri_btn{width: 100%;height: 158rpx;display: flex;align-items: center;justify-content: space-evenly;}.pri_btn .confuse_btn,.pri_btn .confirm_btn{width: 200rpx;height: 90rpx;border-radius: 20rpx;font-size: 34rpx;}.pri_btn .confuse_btn{background-color: #eee;color: #52bf6b;}.pri_btn .confirm_btn{background-color: #52bf6b;color: #fff;}
</style>

步骤二、单个页面引用

:每个需要获取用户隐私的页面,都需要引入隐私弹窗,如果用户点击同意按钮,其他页面再获取隐私时,不会再弹出;如果拒绝,则每个页面需要获取隐私时,都会出现弹窗确认。

两种方法选其一即可。

一、被动监听
用到的接口:
wx.onNeedPrivacyAuthorization:监听何时需要提示用户阅读隐私政策
wx.openPrivacyContract:跳转到隐私协议页面

如下我演示了一个页面的引入情况,其他有用到隐私的页面,同样引入即可:

<template><view><!-- 隐私协议弹窗 --><showPrivacyAgreement ref="showPrivacy" :visible.sync="privacyVisible"></showPrivacyAgreement></view>
</template>
<script>import showPrivacyAgreement from '../components/showPrivacyAgreement.vue'export default {components: {showPrivacyAgreement},data() {return {privacyVisible: false,}},onShow(){if(wx.onNeedPrivacyAuthorization){wx.onNeedPrivacyAuthorization(resolve => {// 需要用户同意隐私授权时// 弹出开发者自定义的隐私授权弹窗this.privacyVisible = truethis.resolvePrivacyAuthorization = resolvethis.$refs.showPrivacy.init(resolve)})return}},}
</script>

该方法的效果是,该页面内 点击某个需要获取隐私的接口时,比如获取相册时,会自动弹窗,同意后,才可获取相册。

效果图
在这里插入图片描述
:点击蓝色字体协议时,会自动跳转到 自家小程序的隐私协议保护指引页面。

二、主动查询
用到的接口:
wx.onNeedPrivacyAuthorization:查询隐私授权情况
wx.openPrivacyContract:跳转到隐私协议页面
<template><view><!-- 隐私协议弹窗 --><showPrivacyAgreement ref="showPrivacy" :visible.sync="privacyVisible"></showPrivacyAgreement></view>
</template>
<script>import showPrivacyAgreement from '../components/showPrivacyAgreement.vue'export default {components: {showPrivacyAgreement},data() {return {privacyVisible: false,}},onShow(){wx.getPrivacySetting({success: res => {console.log(res)if (res.needAuthorization) {// 需要弹出隐私协议this.privacyVisible = truethis.$refs.showPrivacy.init()} },fail: () => {}})},}
</script>

讲解:该接口是进入页面时,调 wx.getPrivacySetting 接口获取到以下内容,用 needAuthorization 来进行判断用户 是否有待同意的隐私政策信息,用户没有授权过,则会返回 true,用户点击同意后会返回 false,如果 ture,则弹窗确认。

在这里插入图片描述
在这里插入图片描述
注:主动查询的接口,当用户点击拒绝后,后续再继续调用相关接口会失败,所以可以再点击拒绝时直接退出小程序或者返回首页,提示用户拒绝不能使用等。

Tips: 微信开发者工具 基础库版本达到 2.32.3 以上,才可调用以上接口。

在这里插入图片描述
留言:大家赶快来调试吧,马上就要上线了,有什么不懂的可以评论区留言,大家一起讨论,有帮助的话,希望三连支持~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/132273.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea VCS配置多个远程仓库

Idea VCS配置多个远程仓库 首先要有两个或多个不同远程仓库地址 idea 添加数据源 查看推送记录 添加数据源 ok之后填写账号密码 推送本地项目 选择不同远程地址 push 查看不同远程地址的 不同分支的 推送记录 不期而遇的温柔&#xff1a; 应用开源架构进行项目开发&#xff0…

【新版】系统架构设计师 - 软件架构设计<新版>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 软件架构设计&#xff1c;新版&#xff1e;考点摘要概念架构的 4 1 视图架构描述语言ADL基于架构的软件开发方法ABSDABSD的开发模型ABSDMABSD&#xff08;ABSDM模型&#xff09;的开发过程 软件架…

k8s node环境部署(三)

1、添加node1、node2环境 前面配置master环境的截图最后一段 复制下来 分别在node主机执行 kubeadm join 192.168.37.132:6443 --token p5omh3.cqjqt8ymrwkdn2fc \ --discovery-token-ca-cert-hash sha256:608a1cbadd060cfdeac2fae84c19609061b750ab51bf9a19887ff7ea…

C# 辗转相除法求最大公约数

辗转相除法求最大公约数 public static void CalcGCD(int largeNumber, int smallNumber, out int GCD){GCD 1;int remain -1;while (remain ! 0){remain largeNumber % smallNumber;GCD smallNumber;largeNumber smallNumber;smallNumber remain;}}

从零基础到精通Flutter开发:一步步打造跨平台应用

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 导言 Flutter是一种流行…

Java开发之框架(spring、springmvc、springboot、mybatis)【面试篇 完结版】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、框架知识分布二、Spring1. spring-单例bean① 问题引入② 单例bean是线程安全的吗③ 问题总结④ 实战面试 2. spring-AOP① 问题引入② AOP记录操作日志③ …

基于SSM+Vue的中国咖啡文化宣传网站

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用vUE技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【JAVA-Day09】 Java注释详解:一般注释、文档注释与最佳实践

Java注释详解&#xff1a;一般注释、文档注释与最佳实践 Java注释详解&#xff1a;一般注释、文档注释与最佳实践摘要引言一、一般注释1.1 块注释1.2 单行注释1.3 尾端注释 二、文档注释三、注释的最佳实践四、总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默…

TheRouter 框架原理

TheRouter 框架入口方法 通过InnerTheRouterContentProvider 注册在AndroidManifest.xml中&#xff0c;在应用启动时初始化 <application><providerandroid:name"com.therouter.InnerTheRouterContentProvider"android:authorities"${applicationId}.…

【AI】机器学习——线性模型(线性回归)

线性模型既能体现出重要的基本思想&#xff0c;又能构造出功能更加强大的非线性模型 参考&#xff1a;唐宇迪机器学习课程 文章目录 3.1 线性模型3.1.1 数据3.1.2 目标/应用 3.2 线性回归3.2.1 回归模型历史3.2.2 回归分析研究内容回归分析步骤 3.2.3 回归分析分类3.2.4 回归模…

Flutter的oktoast插件详解

文章目录 简介详细介绍安装和导入导入在MaterialApp外面套一层OKToast组件为什么是包住MaterialApp&#xff1f; 显示Toast消息&#xff1a; 高级使用Toast位置Toast持续时间自定义Toast样式高级用法 使用场景提示消息表单验证操作反馈网络请求状态调试信息小结 总结 简介 okt…

数据治理中的核心元素——元数据

一、什么是元数据&#xff1f; 元数据是关于数据的组织&#xff0c;数据域及其关系的信息&#xff0c;简单来说&#xff0c;元数据就是被用来描述数据的信息。元数据是一个涵盖大量信息的数据集合。元数据可以为数据说明其元素或者属性&#xff08;名称&#xff0c;大小&#x…

029:vue项目,勾选后今天不再弹窗提示

第029个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

多元函数的微分法

目录 复合函数微分法 隐函数微分法 复合函数求导与全微分 隐函数偏导数与全微分 复合函数微分法 复合函数微分法是一种求导方法&#xff0c;用于计算复合函数的导数。 假设有一个复合函数yf(u)&#xff0c;其中ug(x)&#xff0c;则复合函数微分法可以用于计算y对x的导数。根…

使用SpringCloud Eureka 搭建EurekaServer 集群- 实现负载均衡故障容错【上】

&#x1f600;前言 本篇博文是关于使用SpringCloud Eureka 搭建EurekaServer 集群- 实现负载均衡&故障容错&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可…

Kafka3.0.0版本——消费者(独立消费者消费某一个主题数据案例__订阅主题)

目录 一、独立消费者消费某一个主题数据案例1.1、案例需求1.2、案例代码1.3、测试 一、独立消费者消费某一个主题数据案例 1.1、案例需求 创建一个独立消费者&#xff0c;消费firstTopic主题中数据&#xff0c;所下图所示&#xff1a; 注意&#xff1a;在消费者 API 代码中必…

JavaScript的基本数据类型如何使用?

JavaScript中的数据类型分为两大类&#xff0c;分别是基本数据类型和复杂数据类型(或称为引用数据类型)&#xff0c;如图所示。 本节重点讲解基本数据类型。下面我们用代码演示基本数据类型的使用。 (1)数字型(Number)&#xff0c;包含整型值和浮点型值: var numl 21; …

Unity中Shader使用最简屏幕坐标并且实现屏幕扭曲

文章目录 前言一、在之前写的shader中&#xff0c;用于对屏幕坐标取样的pos是在顶点着色器中完成计算的&#xff0c;然而还有一种更为简洁的方法&#xff0c;就是用顶点着色器中传给片元着色器的pos来给屏幕抓取进行采样原理&#xff1a;在顶点着色器中&#xff0c;o.pos是裁剪…

被删除并且被回收站清空的文件如何找回

文件的意外删除和回收站清空是许多用户面临的普遍问题。这种情况下&#xff0c;很多人会感到无助和焦虑&#xff0c;担心自己的重要文件永远丢失。然而&#xff0c;幸运的是&#xff0c;依然存在一些有效的方法能够帮助我们找回被删除并且被回收站清空的文件。 ▌被删除文件在…

计算机系统的基本概念

计算机系统的基本概念 本文主要以hello.c这个程序的整个生命周期来简单了解一下计算机系统结构的基本概念。 #include <stdio.h>int main() {printf("hello, world\n");return 0; }gcc hello.c -o hello ./hello hello, world此刻&#xff0c;hello.c源程序…