不如摸鱼去
不如摸鱼去
  • 发布:2023-08-25 14:18
  • 更新:2024-05-14 12:51
  • 阅读:6541

uni-app 微信小程序隐私协议开发实践(有组件提供,见文章底部)

分类:uni-app

背景

2023 年 08 月 10 日,微信团队发布了关于微信小程序隐私保护指引设置的公告:自2023年9月15日起,对于涉及处理用户个人信息的小程序开发者,微信要求,仅当开发者主动向平台同步用户已阅读并同意了小程序的隐私保护指引等信息处理规则后,方可调用微信提供的隐私接口。这篇公告发布之后,引发了微信社区的广泛不满和抱怨。许多开发者抱怨称,相关文档难以理解,微信偷偷将相关实现回退导致开发进度受阻后无法进行调试,而微信相关的代码逻辑也比较混乱。

2023 年 08 月 22 日微信官方又偷偷更新了相关的文档,接口可以正常调试了,同时官方也给出了相关的Demo,所以我们又可以开始心不甘情不愿开开心心地调试了。

微信官方文档及公告地址

关于小程序隐私保护指引设置的公告

隐私相关接口

微信小程序隐私协议开发指南

更新用户隐私保护指引

小程序管理员或开发者可以根据具体小程序涉及到的隐私相关接口来更新微信小程序后台的用户隐私保护指引,更新并审核通过后就可以进行相关的开发调试工作。

需要注意的是,仅有在指引中声明所处理的用户信息,才可以调用平台提供的对应接口或组件。若未声明,对应接口或组件将直接禁用

开发指南解读

开发调试配置

参考 微信小程序隐私协议开发指南中的介绍

目前 getPrivacySettingonNeedPrivacyAuthorizationrequirePrivacyAuthorize 等接口目前可以正常接入调试。调试说明:

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

  • 在 2023 年 9 月 15 号之后,不论 app.json 中是否有配置 usePrivacyCheck,隐私相关功能都会启用。

所以在基于uni-app开发时,我们在 2023 年 9 月 15 号之前进行相关开发调试则需要在manifest.json文件mp-weixin中添加"__usePrivacyCheck__": true

微信官方 Demo

  • demo1: 演示使用 wx.getPrivacySetting<button open-type="agreePrivacyAuthorization"> 在首页处理隐私弹窗逻辑 https://developers.weixin.qq.com/s/gi71sGm67hK0

  • demo2: 演示使用 wx.onNeedPrivacyAuthorization<button open-type="agreePrivacyAuthorization"> 在多个页面处理隐私弹窗逻辑,同时演示了如何处理多个隐私接口同时调用。 https://developers.weixin.qq.com/s/4X7yyGmQ7EKp

  • demo3: 演示 wx.onNeedPrivacyAuthorizationwx.requirePrivacyAuthorize<button open-type="agreePrivacyAuthorization"><input type="nickname">组件如何结合使用 https://developers.weixin.qq.com/s/jX7xWGmA7UKa

  • demo4: 演示使用 wx.onNeedPrivacyAuthorization<button open-type="agreePrivacyAuthorization"> 在多个 tabBar 页面处理隐私弹窗逻辑 https://developers.weixin.qq.com/s/g6BWZGmt7XK9

微信官方给出了 4 个 Demo,可以覆盖大多数的开发场景,其内容主要就是getPrivacySettingonNeedPrivacyAuthorizationrequirePrivacyAuthorize这三个接口的组合使用。

Demo 解读

Demo1

Demo1 仅使用wx.getPrivacySetting接口查询隐私授权情况,在needAuthorizationtrue时主动打开授权弹框。

Demo2

Demo2 使用wx.onNeedPrivacyAuthorization接口监听隐私接口需要用户授权事件,当需要用户进行隐私授权时会触发该事件,与此同时此时打开授权弹框。

Demo3

Demo3 使用wx.onNeedPrivacyAuthorization接口监听隐私接口需要用户授权事件,使用wx.requirePrivacyAuthorize模拟隐私接口调用,所以 Demo3 不需要用户真的进行隐私授权操作,就可以主动打开授权弹框。

Demo4

Demo4 与 Demo2 的逻辑基本上一致,针对tabbar切换场景增加了打开授权弹框的同时关闭其他 tabbar 已打开授权弹框的逻辑。

Demo 总结

我们可以根据具体的场景来参考 demo 组合使用getPrivacySettingonNeedPrivacyAuthorizationrequirePrivacyAuthorize接口进行开发,比如某个页面需要上传图片,就需要使用wx.chooseImagewx.chooseMedia接口,这时候我们的场景和 Demo2 基本上是一致的,在用户点击选择图片的按钮时,就可以触发wx.onNeedPrivacyAuthorization并打开授权弹框。

组件推荐

推荐使用组件ws-wx-privacy 微信隐私保护弹出框,支持vue2和vue3

这里我们是以组件的形式提供了授权弹框,监听页面中用户调用隐私授权接口,开发者将组件引入页面后可以自行选择主动触发或被动触发。


<template>  
  <view>  
  <!-- #ifdef MP-WEIXIN -->  
  <ws-wx-privacy  
    id="privacy-popup"  
    @disagree="handleDisagree"  
    @agree="handleAgree"  
    title="用户隐私保护提示"  
    desc="感谢您使用本应用,您使用本应用的服务之前请仔细阅读并同意"  
    protocol="《用户隐私保护指引》"  
    subDesc="。当您点击同意并开始时用产品服务时,即表示你已理解并同意该条款内容,该条款将对您产生法律约束力。如您拒绝,将无法使用相应服务。"  
  ></ws-wx-privacy>  
  <!-- #endif -->  
  </view>  
</template>  
<script>  

export default {  
  methods: {  
    handleDisagree() {  
      // 处理用户不同意隐私协议的逻辑  
    },  
    handleAgree() {  
      // 处理用户同意隐私协议的逻辑  
    }  
  }  
}  
</script>

微信隐私保护弹出框组件推荐

推荐使用组件ws-wx-privacy 微信隐私保护弹出框,支持vue2和vue3

相关文章

支持多平台小程序的uni-app持续集成工具

基于vue3的uni-app路由库uni-mini-router助你实现跳转、传参、拦截等路由功能

前端代码提交规范

Vue3高颜值组件库

Wot Design Uni | 一个参照Wot-design打造的uni-app组件库

6 关注 分享
sei摸挑 9***@qq.com 不如摸鱼去 Huiqi skysowe DCloud_UNI_OttoJi

要回复文章请先登录注册

1***@163.com

1***@163.com

回复 z***@qq.com :
我也有有这个提示,但是隐私相关功能是可以正常使用的
2023-09-03 19:05
不如摸鱼去

不如摸鱼去 (作者)

回复 1***@qq.com :
配置有问题 ,自检一下。
2023-09-02 02:59
1***@qq.com

1***@qq.com

没用的,uniapp 中 choose Image 还是没反应的
2023-09-01 18:20
不如摸鱼去

不如摸鱼去 (作者)

回复 9***@qq.com :
ok。在微信小程序隐私保护过程中遇到的问题也可以再来分享,你这个问题也让我避免了一个bug单。
2023-08-30 14:28
9***@qq.com

9***@qq.com

回复 不如摸鱼去 :
感谢,学习一下
2023-08-30 14:13
不如摸鱼去

不如摸鱼去 (作者)

回复 9***@qq.com :
在onShow中处理也是可以的,不过会增加组件使用的复杂度,参考本篇文章中的[组件](https://ext.dcloud.net.cn/plugin?id=14346),可以获取当前页面的组件实例,就可以了。
2023-08-30 13:59
9***@qq.com

9***@qq.com

回复 不如摸鱼去 :
好像是返回A页面后,组件没有重新加载的问题(我的理解是:组件存在,但是属于B页面)。https://blog.csdn.net/qq_45284938/article/details/120947615 参考这个文章在页面onshow里处理了下
2023-08-30 13:49
不如摸鱼去

不如摸鱼去 (作者)

回复 9***@qq.com :
应该是因为this指向错误的问题
2023-08-30 12:55
3***@qq.com

3***@qq.com

回复 1***@163.com :
只要同意一次就行了 其他地方就不会弹窗了
2023-08-25 18:03
9***@qq.com

9***@qq.com

回复 不如摸鱼去 :
AB页面都有引用组件,不触发弹框,或者触发后点击拒绝按钮,返回A页面的时候触发隐私协议都会出现问题
2023-08-25 17:39