• 微信小程序隐私协议相关接口实际使用方式


    1. wx:if="{{showPrivacy}}" class="privacy">
    2. <view class="popup">
    3. <view>隐私弹窗内容....view>
    4. <view bindtap="openPrivacyAgreement">点击查看隐私协议view>
    5. <button id="disagreeBtn" bindtap="disagreePrivacy">不同意button>
    6. <button id="agreeBtn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="agreePrivacy">同意button>
    7. view>

    1、全局控制

    页面加载时自动弹窗,同意后可以使用对应功能,不同意退出页面或者隐藏相关功能。
    这种情况下,需要在onLoad里使用wx.getPrivacySetting获取隐私授权情况,没授权时弹出隐私弹窗。完整代码如下

    1. Page({
    2. data: {
    3. showPrivacy: false // 控制隐私弹窗是否展示
    4. },
    5. openPrivacyAgreement() {
    6. // 查看隐私协议
    7. wx.openPrivacyContract()
    8. },
    9. disagreePrivacy() {
    10. // 关闭隐私弹窗
    11. this.setData({
    12. showPrivacy: false
    13. })
    14. // 这里是不同意隐私协议的后续操作,比如退出页面、隐藏相关功能等
    15. },
    16. agreePrivacy() {
    17. // 关闭隐私弹窗
    18. this.setData({
    19. showPrivacy: false
    20. })
    21. // 这里是同意隐私协议的后续操作,比如展示被隐藏的相关功能
    22. },
    23. onLoad() {
    24. if (wx.getPrivacySetting) {
    25. wx.getPrivacySetting({
    26. success: res => {
    27. if (res.needAuthorization) {
    28. // 打开隐私弹窗
    29. this.setData({
    30. showPrivacy: true
    31. })
    32. } else {
    33. // 用户已经同意过隐私协议,直接执行同意隐私协议的后续操作,比如展示被隐藏的相关功能
    34. }
    35. }
    36. })
    37. }
    38. }
    39. })

    2、按需使用

    在使用到隐私接口时弹出隐私弹窗,同时隐私接口的流程会被挂起,用户同意后会继续执行,不同意则中止执行。
    这种情况下,需要在onLoad里定义好监听隐私接口时的授权事件,也就是wx.onNeedPrivacyAuthorization,然后在用户点击同意或者不同意后调用回调接口 resolve 进行上报,完整代码如下

    1. Page({
    2. data: {
    3. showPrivacy: false // 控制隐私弹窗是否展示
    4. },
    5. openPrivacyAgreement() {
    6. // 查看隐私协议
    7. wx.openPrivacyContract()
    8. },
    9. disagreePrivacy() {
    10. // 关闭隐私弹窗
    11. this.setData({
    12. showPrivacy: false
    13. })
    14. // 上报用户不同意隐私协议,隐私接口操作会被自动中止
    15. this.resolvePrivacyAuthorization({
    16. buttonId: 'disagreeBtn',
    17. event: 'disagree'
    18. })
    19. },
    20. agreePrivacy() {
    21. // 关闭隐私弹窗
    22. this.setData({
    23. showPrivacy: false
    24. })
    25. // 上报用户同意隐私协议,隐私接口操作会被自动继续执行
    26. this.resolvePrivacyAuthorization({
    27. buttonId: 'agreeBtn',
    28. event: 'agree'
    29. })
    30. },
    31. onLoad() {
    32. if (wx.onNeedPrivacyAuthorization) {
    33. wx.onNeedPrivacyAuthorization(resolve => {
    34. // 打开隐私弹窗
    35. this.setData({
    36. showPrivacy: true,
    37. })
    38. // 定义上报方法
    39. this.resolvePrivacyAuthorization = resolve
    40. })
    41. }
    42. }
    43. })

    3、全局控制和按需使用结合使用

    这种情况是上面两种方式的结合,页面加载

    1. let pageOnload = true // 是否页面加载时弹窗
    2. Page({
    3. data: {
    4. showPrivacy: false // 控制隐私弹窗是否展示
    5. },
    6. openPrivacyAgreement() {
    7. // 查看隐私协议
    8. wx.openPrivacyContract()
    9. },
    10. disagreePrivacy() {
    11. // 关闭隐私弹窗
    12. this.setData({
    13. showPrivacy: false
    14. })
    15. if (!pageOnload) {
    16. // 上报用户不同意隐私协议,隐私接口操作会被自动中止
    17. this.resolvePrivacyAuthorization({
    18. buttonId: 'disagreeBtn',
    19. event: 'disagree'
    20. })
    21. } else {
    22. pageOnload = false
    23. }
    24. },
    25. agreePrivacy() {
    26. // 关闭隐私弹窗
    27. this.setData({
    28. showPrivacy: false
    29. })
    30. if (!pageOnload) {
    31. // 上报用户同意隐私协议,隐私接口操作会被自动继续执行
    32. this.resolvePrivacyAuthorization({
    33. buttonId: 'agreeBtn',
    34. event: 'agree'
    35. })
    36. } else {
    37. pageOnload = false
    38. }
    39. },
    40. onLoad() {
    41. if (wx.getPrivacySetting) {
    42. wx.getPrivacySetting({
    43. success: res => {
    44. if (res.needAuthorization) {
    45. // 打开隐私弹窗
    46. this.setData({
    47. showPrivacy: true
    48. })
    49. }
    50. }
    51. })
    52. }
    53. if (wx.onNeedPrivacyAuthorization) {
    54. wx.onNeedPrivacyAuthorization(resolve => {
    55. // 打开隐私弹窗
    56. this.setData({
    57. showPrivacy: true,
    58. })
    59. // 定义上报方法
    60. this.resolvePrivacyAuthorization = resolve
    61. })
    62. }
    63. }
    64. })

    时弹出隐私弹窗,不管用户同意还是不同意都不需要做其他操作。然后用户在用到隐私接口时,根据用户是否同意再按需决定是否再次弹窗。
    这种情况下,需要在onLoad里使用wx.getPrivacySetting获取隐私授权情况,没授权时弹出隐私弹窗。同时定义好监听隐私接口时的授权事件,也就是wx.onNeedPrivacyAuthorization,然后在用户点击同意或者不同意后调用回调接口 resolve 进行上报,完整代码如下

  • 相关阅读:
    Qt 关于窗口全屏显示与退出全屏的实现
    阿里云宣布核心产品全面 Serverless 化
    视频改字祝福 豪车装X系统源码uniapp前端源码
    @Transactional & @Aysnc & 循环依赖 & 事务同步问题
    复制粘贴,快速将Python程序打包成exe
    信号量 线程通信- Linux系统编程-(pthread)
    杀毒软件如何识别病毒43.240.74.X
    MySQL Server 和 MySQL Workbench安装
    华为机试真题 Java 实现【报文解压缩】
    宿舍管理微信小程序源码
  • 原文地址:https://blog.csdn.net/qq_43770056/article/details/132691111