评论

试着解读一下《小程序隐私协议开发指南》3个官方demo的应用场景

关于小程序隐私协议开发, 官方最近给出了3个demo,看起来都不太一样, 本文试着依照本人的理解做一些解读,就当是抛砖引玉吧

隐私协议开发

关于小程序隐私协议开发, 官方最近给出了3个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.onNeedPrivacyAuthorization、wx.requirePrivacyAuthorize、<button open-type=“agreePrivacyAuthorization”> 和 <input type=“nickname”> 组件如何结合使用 https://developers.weixin.qq.com/s/jX7xWGmA7UKa

说明也比较简单,我结合我查看demo源码说一下我理解的使用场景

demo1

  • 这个是最简单的。调用的隐私协议接口最少,只有一个wx.getPrivacySetting。(wx.openPrivacyContract不算)。
    其逻辑就是在调用任何隐私接口之前检查授权状态,已授权则啥也不做,未授权则弹窗。

  • 特点:

  1. 开发者主动检查后弹窗,而不是隐私接口调用触发。
  2. 简单,代码量最少。
  3. 流程:主动检查->弹窗->用户同意->调用隐私接口
  • 适用场景:
  1. 小程序启动过程没有调用隐私接口,换句话说,隐私接口需要由用户动作才会调用,如用户点击按钮选择图片。
  2. 强隐私需求小程序,用户不给授权就不能用,直接退出那种。
  3. 极简小程序,比如就一个页面,或者就只调用一个隐私接口。

以上几种情况就可以使用demo1, 在小程序启动时做检查,没授权就弹窗,用户不同意就退出;

或者对于极简小程序,比如就一个页面点击按钮选个图片,可以在处理按钮事件时调用wx.getPrivacySetting。弹窗后用户不同意就啥也不干或给个toast,下次用户再点按钮就再检查再弹窗。

demo2

  • demo2就复杂一些了,需要用到wx.onNeedPrivacyAuthorization接口了,和demo1的区别就是,弹窗是由调用隐私接口触发的,而不是开发者主动检查触发

    • 特点:
  1. 弹窗是由调用隐私接口触发。
  2. 复杂,代码量多。
  3. 流程:调用隐私接口->弹窗(同时隐私接口pending)->用户同意/不同意->隐私接口返回成功或失败
  • 适用场景:
  1. 普遍场景,多个页面,多个隐私接口。
  2. 被动触发,无需关心隐私接口何时被调用。

demo3

  • demo3在demo2的基础上,就多了wx.requirePrivacyAuthorize调用,官方说法是这个接口用来模拟隐私接口调用。

  • 特点:

  1. 弹窗可以由调用隐私接口触发,也可以由wx.requirePrivacyAuthorize触发
  2. 复杂,代码量多。
  3. 流程:调用隐私接口(wx.requirePrivacyAuthorize)->弹窗(同时隐私接口pending)->用户同意/不同意->隐私接口返回成功或失败
  4. 相较于demo1,相同的地方在于开发者可主动触发隐私弹窗,不同的地方在于demo3更复杂一些
  5. 相较于demo2,相同的地方在于其逻辑和调用真实隐私接口是一致的,不同之处在于给开发者提供了一种更灵活的可主动触发弹窗的模式
  6. 你可以认为 demo3=demo1 + demo2
  • 适用场景:
  1. 同demo2。
  2. 无接口的隐私组件,如<input type=“nickname”>
  3. 比demo2更灵活的需求.

对于wx.requirePrivacyAuthorize接口,大家不要把这个接口局限于仅在开发时调试用。这个接口也是可以用在线上的。可以用来实现更灵活的逻辑。

以上就是我对这3个demo的理解,大家有什么样的想法欢迎在评论区留言大家一起讨论。

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

10 个评论

  • +_+
    +_+
    2023-09-12

    文档上写,低于 2.32.3 版本的基础库,不是说不受影响吗,难道。。。

    2023-09-12
    赞同 1
    回复 1
    • 毛毛
      毛毛
      2023-09-17
      所以低于 2.32.3 版本的基础库到底要不要改啊
      2023-09-17
      回复
  • 牛
    2023-09-14

    嘿嘿

    2023-09-14
    赞同
    回复
  • 朱忠科
    朱忠科
    2023-09-12

    demo1里边没有看到使用 wx.getPrivacySetting 和 <button open-type=“agreePrivacyAuthorization”>这两个

    2023-09-12
    赞同
    回复 2
    • 朱忠科
      朱忠科
      2023-09-12
      找到了
      2023-09-12
      回复
    • 兀
      2023-10-09
      所以是怎么运行的呐,哭了。。。 我把appid换成我的,编译后隐私协议组件渲染出来是0*0,真心求教
      2023-10-09
      回复
  • 阳
    2023-09-07

    你们有没有遇到在发布体验版本后,苹果手机调用wx.getPrivacySetting报错,安卓手机更新到对应基础库可以?

    2023-09-07
    赞同
    回复
  • 路漫漫兮
    路漫漫兮
    2023-09-07

    按这个意思,只要确保用户能够点击 <button open-type=“agreePrivacyAuthorization”> 按钮就可以了嘛

    2023-09-07
    赞同
    回复 1
    • Jerry
      Jerry
      2023-09-07
      可以这么理解
      2023-09-07
      回复
  • 小叶子
    小叶子
    2023-09-07

    感谢解读。官方这需求弄的真是太粗暴了...

    2023-09-07
    赞同
    回复
  • 想牵着你的手
    想牵着你的手
    2023-09-06

    可以在微信登录的时候调用吗,如果他不同意,我不让他登录

    2023-09-06
    赞同
    回复 1
    • Jerry
      Jerry
      2023-09-06
      技术上是可以,但你得考虑能不能过审
      2023-09-06
      回复
  • 小乙
    小乙
    2023-09-05

    啥意思,之前调用wx.getLocation做了一堆设置,而且还带有用户同意的弹窗,都不够,还得再次基础上再增加一个用户隐私授权的提示吗?

    2023-09-05
    赞同
    回复 3
    • Jerry
      Jerry
      2023-09-05
      是啊,你还没加吗?赶紧的,这都5号了
      2023-09-05
      回复
    • walking on air
      walking on air
      2023-09-05回复Jerry
      醉了,是不是不加,那些组件都用不了?
      2023-09-05
      回复
    • Jerry
      Jerry
      2023-09-05
      没加就用不了了
      2023-09-05
      回复
  • Kiara
    Kiara
    2023-09-01

    也就是说,如果项目适用demo1,那么只要首页用户已经同意授权,就不需要在各个调用隐私接口的地方增加demo2的代码了是吗

    2023-09-01
    赞同
    回复 1
    • Jerry
      Jerry
      2023-09-01
      是的,但你要确保用户不同意时后续不会调用到隐私接口
      2023-09-01
      1
      回复
  • 番茄味的薯片
    番茄味的薯片
    2023-08-30

    请问协议必须是从wx.getPrivacySetting里获取吗还是可以使用本地的点击按钮就可以?请问uniapp小程序在哪里配置__usePrivacyCheck__: true

    2023-08-30
    赞同
    回复 5
    • Jerry
      Jerry
      2023-08-30
      wx.getPrivacySetting拿到的只是个协议的名字,要打开还是要调用wx.openPrivacyContract; uniapp没玩过,问问其他人
      2023-08-30
      回复
    • sherpa
      sherpa
      2023-08-30
      配置在minifest.json里的mp-weixin就行
      2023-08-30
      1
      回复
    • 子非鱼
      子非鱼
      2023-09-05
      2023-09-05
      回复
    • 希文
      希文
      05-03回复子非鱼
      __usePrivacyCheck__: true就可以了嘛?
      05-03
      回复
    • 希文
      希文
      05-03回复sherpa
      __usePrivacyCheck__: true就可以了嘛?
      05-03
      回复
登录 后发表内容