微信小程序 用户隐私隐私授权(cv可用)
  94VtUmvOSYP5 2023年11月02日 41 0

微信小程序 用户隐私隐私授权(cv可用)_f5

# 小程序用户隐私

摘要链接

小程序用户隐私保护授权弹窗组件

微信小程序 用户隐私隐私授权(cv可用)_用户隐私_02

<view class="privacy" wx:if="{{showPrivacy}}" catchtouchmove="handleCatchtouchMove">
    <view class="content">
        <view class="title">隐私保护指引</view>
        <view class="des">
            在使用当前小程序服务之前,请仔细阅读<text class="link" bind:tap="openPrivacyContract">{{privacyContractName}}</text>。如你同意{{privacyContractName}},请点击“同意”开始使用。
        </view>
        <view class="btns">
            <button class="item reject" bind:tap="exitMiniProgram">拒绝</button>
            <button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
        </view>
    </view>
</view

.privacy {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, .5);
  z-index: 9999999;
  display: flex;
  align-items: center;
  justify-content: center;
}

.content {
  width: 632rpx;
  padding: 48rpx;
  box-sizing: border-box;
  background: #fff;
  border-radius: 16rpx;
}

.content .title {
  text-align: center;
  color: #333;
  font-weight: bold;
  font-size: 32rpx;
}

.content .des {
  font-size: 26rpx;
  color: #666;
  margin-top: 40rpx;
  text-align: justify;
  line-height: 1.6;
}

.content .des .link {
  color: #07c160;
  text-decoration: underline;
}

.btns {
  margin-top: 48rpx;
  display: flex;
}

.btns .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;
}

.btns .reject {
  background: #f4f4f5;
  color: #909399;
}

.btns .agree {
  background: #07c160;
  color: #fff;
}

const app = getApp()
Component({
  /**
   * 组件的初始数据
   */
  data: {
      privacyContractName: '',
      showPrivacy: false
  },
  /**
   * 组件的生命周期
   */
  pageLifetimes: {
      show() {
          const _ = this
          const version = wx.getAppBaseInfo().SDKVersion
          if (_.compareVersion(version, '2.32.3') >= 0) {
              wx.getPrivacySetting({
                  success(res) {
                      if (res.errMsg == "getPrivacySetting:ok") {
                          _.setData({
                              privacyContractName: res.privacyContractName,
                              showPrivacy: res.needAuthorization
                          })
                      }
                  }
              })
          }
      }
  },
  /**
   * 组件的方法列表
   */
  methods: {
      // 打开隐私协议页面
      openPrivacyContract() {
          const _ = this
          wx.openPrivacyContract({
              fail: () => {
                  wx.showToast({
                      title: '遇到错误',
                      icon: 'error'
                  })
              }
          })
      },
      // 拒绝隐私协议
      exitMiniProgram() {
          wx.showToast({
              title: '必须同意后才可以继续使用当前小程序',
              icon: 'none'
          })
      },
      // 同意隐私协议
      handleAgreePrivacyAuthorization() {
          const _ = this
          _.setData({
              showPrivacy: false
          })

          if(this.data.showPrivacy == false){
            let userInfo = app.globalData.userInfo; 
            if (userInfo == null) {
              wx.navigateTo({
                url: '/pages/authorization/index'
              })
              return;
            }
          }
      },
      // 比较版本号
      compareVersion(v1, v2) {
          v1 = v1.split('.')
          v2 = v2.split('.')
          const len = Math.max(v1.length, v2.length)

          while (v1.length < len) {
              v1.push('0')
          }
          while (v2.length < len) {
              v2.push('0')
          }

          for (let i = 0; i < len; i++) {
              const num1 = parseInt(v1[i])
              const num2 = parseInt(v2[i])

              if (num1 > num2) {
                  return 1
              } else if (num1 < num2) {
                  return -1
              }
          }

          return 0
      },
      // 通过绑定空事件禁止滑动事件的穿透
      handleCatchtouchMove() {
          return
      }
  },
})

下面是在页面中引入 并使用

json

"usingComponents": {
    "Privacy": "/component/privacyDialog/privacyDialog"
  },

wxml

<Privacy/>
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: useEffect使用指南 下一篇: 7. 整数反转
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
94VtUmvOSYP5