评论

关于新版隐私协议接口wx.onNeedPrivacyAuthorization的适配解读以及实现代码

关于新版隐私协议接口wx.onNeedPrivacyAuthorization的适配解读以及实现代码

官方公告地址:

https://developers.weixin.qq.com/community/develop/doc/00042e3ef54940ce8520e38db61801

目前,开发工具或者体验版的小程序,调试基础库如果是2.33.0及以上就得适配了,线上版本9月15日之后生效,所以这之前需要尽快改完,发布一版,否则到了9月15号之后 线上就会生效报错了。

其实改起来也很简单,以下是实现步骤和代码:

1、首先看一下这个网址,里边包含涉及到的隐私的接口,这些接口都要适配一下

https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/miniprogram-intro.html

在以上接口用到的页面,需要画一下类似上边的弹窗(这个弹窗可以全局定义个组件,方便多个页面共用),然后里边蓝字可以点击后调用wx.openPrivacyContract(Object object)接口即可,会自动跳转打开隐私协议页面。

拒绝按钮可以加一个点击事件,然后在事件里这样写

同意按钮比较特殊,布局需要用button这样写,记得给button加一个Id

然后在handleAgreePrivacyAuthorization里就可以获取到点击事件,这样写

2、最后需要在onLoad或者onShow里加上以下监听代码,在这里边让自定义的隐私弹窗显示出来即可。


以上代码加上就可以了,如果业务逻辑用到了需要判断是否授权过,可以加上 wx.getPrivacySetting(Object object)去获取是否授权过,用不到可以不加这个判断。

最后一次编辑于  2023-08-16  
点赞 28
收藏
评论

84 个评论

  • 琪哥
    琪哥
    2023-08-17

    楼主:你这边和微信官方的方案不一致吧。需要把wx.onNeedPrivacyAuthorization监听方法中加入隐私接口相关的逻辑之前,不一定是onload生命周期

    相关官方代码链接如下:

    https://developers.weixin.qq.com/miniprogram/dev/api/open-api/privacy/wx.onNeedPrivacyAuthorization.html

    2023-08-17
    赞同
    回复
  • HiWi
    HiWi
    2023-08-17

    楼主你这在自定义组件中怎么拿到  resolvePrivacyAuthorization?


    2023-08-17
    赞同
    回复 1
    • 一笑皆春
      一笑皆春
      2023-08-18
      不需要拿,这个东西就是这个页用到的
      2023-08-18
      回复
  • 珂珂
    珂珂
    2023-08-17
    this.resolvePrivacyAuthorization = resolve
    
    这个 resolvePrivacyAuthorization 需要在哪里定义吗?
    


    2023-08-17
    赞同
    回复 4
    • 一笑皆春
      一笑皆春
      2023-08-17
      你可以在全局定义一下,也可以直接用
      2023-08-17
      回复
    • Nana
      Nana
      2023-08-18回复一笑皆春
      全局定义,是定义成对象还是字符串,还是定义一个方法函数?
      2023-08-18
      回复
    • 一笑皆春
      一笑皆春
      2023-08-18回复Nana
      你不管定义什么,执行this.resolvePrivacyAuthorization = resolve的时候都会重新赋值
      2023-08-18
      回复
    • 2023-08-18回复一笑皆春
      let resolvePrivacyAuthorization: (arg0: { buttonId: string, event: string }) => void   这么写不行啊,报错
      2023-08-18
      回复
  • Nana
    Nana
    2023-08-17

    请问官方给的wx.getPrivacySetting 这个接口怎么配合wx.onNeedPrivacyAuthorization 使用啊?

    2023-08-17
    赞同
    回复 11
    • Nana
      Nana
      2023-08-17
      还有,请问授权弹框里的内容,是怎么获取?用wx.getPrivacySetting 吗?
      2023-08-17
      回复
    • sine
      sine
      2023-08-17
      wx.getPrivacySetting 和 wx.onNeedPrivacyAuthorization  各有各的用处,不一定要两个一起用。
      2023-08-17
      回复
    • sine
      sine
      2023-08-17回复Nana
      授权弹框里的内容需要开发者自己定义,可以参考公告里的弹窗 https://developers.weixin.qq.com/community/develop/doc/00042e3ef54940ce8520e38db61801
      2023-08-17
      回复
    • Nana
      Nana
      2023-08-18回复sine
      那如果一个页面调用了多个需要授权的接口,怎么使用?
      2023-08-18
      回复
    • Nana
      Nana
      2023-08-18回复sine
      我的意思是,多个接口,那弹框里的内容肯定不一样吧,到时候是只弹出一个弹框,还是接连弹出不同弹框?协议内容如何展示?
      2023-08-18
      回复
    查看更多(6)
  • 💤
    💤
    2023-08-17

    我是一个设计师,谁出个教程啊,没教程真搞懂,用的是傻白甜UNI框架

    2023-08-17
    赞同
    回复
  • 藻雪
    藻雪
    2023-08-17

    直接写?

    if(wx.onNeedPrivacyAuthorization){}
    


    直接写在if里吗?我看这个api是有返回值,如果没有授权这个api会返回 false,空,或null ?

    目前我看里面是有值的,if都能触发

    2023-08-17
    赞同
    回复 5
    • 藻雪
      藻雪
      2023-08-17回复一笑皆春
      哦哦,我懂了,我把它写到组件生命周期里,然后使用隐私api的页面引用这个组件感觉可行不?官方说出完整demo也不知道要多久,
      2023-08-17
      回复
    • M.
      M.
      2023-08-17回复藻雪
      可以指路一下官方哪里说要出完整demo吗
      2023-08-17
      回复
    • 藻雪
      藻雪
      2023-08-17回复M.
      我也不知道,等着官方出demo呢
      2023-08-17
      回复
    • 藻雪
      藻雪
      2023-08-17回复M.
      你小程序搜 ---- “微网点东莞银行”,我看他们已经加了隐私条款了,但是很粗暴,拒绝就直接退出小程序了,这样就妨碍用户使用了,这个应该是不合规的
      2023-08-17
      回复
    • 所念不知所起
      所念不知所起
      2023-08-17回复藻雪
      keep也是,我还专门问客服 都是不合规的,但投诉没屁用,真恶心人啊qaq
      2023-08-17
      回复
  • 积玉
    积玉
    2023-08-16

    还有一个问题 如果低版本用户怎么处理。需要自己写兼容逻辑吗

    2023-08-16
    赞同
    回复
  • 💭
    💭
    2023-08-16

    比如在首页需要用到地理位置授权,用户如果拒绝了,是不是就不能获取地理位置了?如果用户在设置里手动打开了,又是什么情况呀?测试也没反应,崩溃

    2023-08-16
    赞同
    回复 2
    • 一笑皆春
      一笑皆春
      2023-08-16
      现在没法测试,等后续官方放开了再修改吧
      2023-08-16
      回复
    • 茶小乖
      茶小乖
      2023-08-17回复一笑皆春
      后续知道是多久不?
      2023-08-17
      回复
  • H : )
    H : )
    2023-08-16

    拒绝后要怎么处理,直接退出小程序吗

    2023-08-16
    赞同
    回复 2
    • H : )
      H : )
      2023-08-16回复一笑皆春
      好的,谢谢
      2023-08-16
      回复
    • flowerRed
      flowerRed
      2023-08-28回复一笑皆春
      那是不是只要同意一次就可以了?
      2023-08-28
      回复
  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    2023-08-16

    第二步监听一次就行,不用再重发监听,你每次onShow都监听的话,可能会导致重复监听

    2023-08-16
    赞同
    回复 13
    • 秦时明月
      秦时明月
      2023-08-16
      有多个页面怎么办,不同页面都有不同的权限,每个页面在onload中那肯定会触发多次监听
      2023-08-16
      回复
    • 社区技术运营专员--阳光
      社区技术运营专员--阳光
      2023-08-16回复一笑皆春
      要放 onShow 也行,确实会覆盖监听
      2023-08-16
      回复
    • 黎明
      黎明
      2023-08-16
      我没试过,但看代码结构,感觉放在onShow是合适的。假如a页面有个api会触发隐私,但用户没触发就跑到b页面,此时b页面假如也有api调用会覆盖回调、等再回到a页面用户触发隐私的api的时候,回调还是b页面的吧
      2023-08-16
      回复
    • Null
      Null
      2023-08-16回复社区技术运营专员--阳光
      这个监听可以只写在app.js里吗
      2023-08-16
      回复
    • 社区技术运营专员--阳光
      社区技术运营专员--阳光
      2023-08-16回复Null
      晚些我们会出个完整的demo给大家参考
      2023-08-16
      1
      回复
    查看更多(8)

正在加载...

登录 后发表内容