uniapp微信小程序用户隐私保护通用组件

一、前言

微信小程序官方公告《关于小程序隐私保护指引设置的公告》

需要处理的隐私接口《插件用户隐私保护说明内容介绍》

二、注意事项

1.2023 年 9 月 15 号之前,默认不会启用隐私相关功能,所以检测不到需要弹窗的情况,可以在 manifest.json 中配置 "__usePrivacyCheck__": true 之后,接口才可以检测到是否需要弹窗。

2.自动打开隐私保护指引界面需在「小程序管理后台」配置《小程序用户隐私保护指引》,官方《用户隐私保护指引填写说明》注:每个用到的隐私接口(同一类型)都需要在后台声明,仅有声明所处理的用户信息,才可以调用平台提供的对应接口或组件。若未声明,对应接口或组件将直接禁用

3.微信开发者工具的调试基础库,最好大于2.33.0,推荐最新版本

三、解决方案

1.manifest.json配置

"mp-weixin": {
	"appid": "**********",
	"setting": {
		"urlCheck": false,
		"minified": true
	},
	"__usePrivacyCheck__": true,
    .........

2.app.vue中验证

// app.vue
globalData: {
	privacyContractName: '', //隐私协议的名字
	showPrivacy: false //控制隐私弹窗显隐
},
onLaunch(){
  const that = this;
    wx.getPrivacySetting({
     success(res) {
      console.log('是否需要授权:', res.needAuthorization, '隐私协议的名称为:', res.privacyContractName);
      if (res.needAuthorization) {
       that.globalData.privacyContractName = res.privacyContractName;
       that.globalData.showPrivacy = true;
      } else {
       that.globalData.showPrivacy = false;
      }
     }
    });
}

3.创建组件

// 组件privacyPopup.vue
<template>
	<view class="privacy" v-if="showPrivacy">
		<view class="content">
			<view class="title">隐私保护指引</view>
			<view class="des">
				在使用当前小程序服务之前,请仔细阅读
				<text class="link" @click="openPrivacyContract">{{ privacyContractName }}</text>
				。如果你同意{{ privacyContractName }},请点击“同意”开始使用。
			</view>
			<view class="btns">
				<button class="item reject" @click="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 {
			privacyContractName: '',
			showPrivacy: false
		};
	},
	created() {
		setTimeout(() => {
			this.showPrivacy = getApp().globalData.showPrivacy;
			this.privacyContractName = getApp().globalData.privacyContractName;
		}, 500);
	},
	methods: {
		// 同意隐私协议
		handleAgreePrivacyAuthorization() {
			const that = this;
			wx.requirePrivacyAuthorize({
				success: res => {
					that.showPrivacy = false;
					getApp().globalData.showPrivacy = false;
				}
			});
		},
		// 拒绝隐私协议
		exitMiniProgram() {
			const that = this;
			uni.showModal({
				content: '如果拒绝,我们将无法获取您的信息, 包括手机号、位置信息、相册等该小程序十分重要的功能,您确定要拒绝吗?',
				success: res => {
					if (res.confirm) {
						that.showPrivacy = false;
						uni.exitMiniProgram({
							success: () => {
								console.log('退出小程序成功');
							}
						});
					}
				}
			});
		},
		// 跳转协议页面  
        // 在真机上点击高亮的协议名字会自动跳转页面 微信封装好的不用操作
		openPrivacyContract() {
			wx.openPrivacyContract({
				fail: () => {
					uni.showToast({
						title: '网络错误',
						icon: 'error'
					});
				}
			});
		}
	}
};
</script>

<style lang="scss" scoped>
.privacy {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background: rgba(0, 0, 0, 0.5);
	z-index: 9999999;
	display: flex;
	align-items: center;
	justify-content: center;
	.content {
		width: 85vw;
		padding: 50rpx;
		box-sizing: border-box;
		background: #fff;
		border-radius: 16rpx;
		.title {
			text-align: center;
			color: #333;
			font-weight: bold;
			font-size: 34rpx;
		}
		.des {
			font-size: 26rpx;
			color: #666;
			margin-top: 40rpx;
			text-align: justify;
			line-height: 1.6;
			.link {
				color: #07c160;
				text-decoration: underline;
			}
		}
		.btns {
			margin-top: 60rpx;
			display: flex;
			justify-content: space-between;
			.item {
				justify-content: space-between;
				width: 244rpx;
				height: 80rpx;
				display: flex;
				align-items: center;
				justify-content: center;
				border-radius: 16rpx;
				box-sizing: border-box;
				border: none;
			}
			.reject {
				background: #f4f4f5;
				color: #909399;
			}
			.agree {
				background: #07c160;
				color: #fff;
			}
		}
	}
}
</style>
4.使用
// index.vue
// 在页面中直接引入使用就行 不需要任何多余操作
<template>
    <view class="content">
        <privacyPopup></privacyPopup>
         <view>......</view>
    </view>
</template>
<script>
    import privacyPopup from '@/components/privacyPopup/privacyPopup.vue';
    export default {
        components: {
		    privacyPopup
	},
}
</script>

5.效果

你好!关于UniApp微信小程序用户隐私的新规,我可以向你提供一些信息。请注意,以下内容仅供参考,具体规定可能会根据地区和平台的要求而有所不同。 根据最新的数据保护法规,包括欧洲的通用数据保护条例(GDPR)和中国的个人信息保护法(PIPL),以及微信小程序平台的相关规定,开发者需要遵守以下几个方面的要求: 1.个人信息收集:开发者需要明确告知用户在使用小程序过程中收集的个人信息类型、目的和使用方式。用户必须明确同意以及了解他们的个人信息将如何被处理和保护。 2.合法合规:开发者需要确保个人信息的收集与处理符合相关法律法规,并且要求第三方服务提供商(如UniApp等)也要遵守相关规定。开发者需要对第三方服务提供商进行审查,确保其有能力保护用户的个人信息。 3.安全保护:开发者需要采取一系列安全措施来保护用户的个人信息,包括但不限于加密、访问控制、防止数据泄露等。 4.用户权利保护:开发者需要允许用户行使其在相关法律法规下享有的权利,包括查看、更正、删除个人信息等。 5.数据跨境流转:如果开发者将用户的个人信息传输到其他国家或地区,在符合相关法律法规的前提下,需要明确告知用户并获得其明确同意。 需要注意的是,以上仅为一般性的规范要求,具体的规定可能因地区和平台的不同而有所变化。因此,我建议你在开始开发小程序之前,查阅微信小程序官方文档和相关法律法规,以确保你的小程序合规并保护用户隐私。 希望以上信息对你有所帮助!如果你还有其他问题,可以继续提问。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值