当前位置:   article > 正文

uni - 微信小程序 自定义隐私协议弹窗_微信小程序 隐私弹窗 示例

微信小程序 隐私弹窗 示例

  2023年9月15日之后 微信小程序 隐私协议更新,需要主动查询隐私授权同步状态以及展示隐私协议

获取用户隐私信息,或者访问相册都需要授权后才能通过

父组件页面用此组件后会自动查询有没有权限,如果没权限会自动调出授权弹框

在第一次调用的时候getPrivacySetting 都会调用 exit 返回给父组件。true为同意,false 为解决

在父组件可以使用 this.$refs.privacy.openShow() 手动打开授权弹框 住:需要在组件上写 ref=privacy

  1. <template>
  2. <u-popup v-model="showPrivacy" mode="center" border-radius="16" width="650rpx" :mask-close-able="false">
  3. <div class="box">
  4. <div class="title"> xxxx 隐私保护指引</div>
  5. <div class="des">
  6. 在使用当前小程序服务之前,请仔细阅读<text class="link" @tap="openPrivacyContract">{{ privacyContractName }}</text>。如你同意{{ privacyContractName }},请点击“同意”开始使用。
  7. </div>
  8. <view class="btns">
  9. <button class="item reject" @tap="exitMiniProgram">拒绝</button>
  10. <button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization" @agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
  11. </view>
  12. </div>
  13. </u-popup>
  14. </template>
  15. <script>
  16. // exit 事件返回 是否同意授权 true同意 false解决
  17. // this.$refs.privacy.openShow() 父组件调用 ref=privacy
  18. export default {
  19. props: {},
  20. data() {
  21. return {
  22. privacyContractName: '',
  23. showPrivacy: false
  24. }
  25. },
  26. created() {
  27. this.init()
  28. },
  29. methods: {
  30. init() {
  31. const _ = this
  32. wx.getPrivacySetting({ // 获取用户有没有授权过
  33. success(res) {
  34. console.log(res)
  35. if (res.errMsg === 'getPrivacySetting:ok') {
  36. _.privacyContractName = res.privacyContractName // 协议名称
  37. _.showPrivacy = res.needAuthorization
  38. if (res.needAuthorization) {
  39. _.$emit('exit', false)
  40. } else {
  41. _.$emit('exit', true)
  42. }
  43. }
  44. }
  45. })
  46. },
  47. openPrivacyContract() {
  48. const _ = this
  49. wx.openPrivacyContract({ // 跳转到隐私协议页面
  50. fail: () => {
  51. wx.showToast({
  52. title: '遇到错误',
  53. icon: 'error'
  54. })
  55. }
  56. })
  57. },
  58. // 拒绝隐私协议
  59. exitMiniProgram() {
  60. // 直接退出小程序
  61. // wx.exitMiniProgram()
  62. this.showPrivacy = false
  63. this.$emit('exit', false)
  64. },
  65. openShow() {
  66. this.showPrivacy = true
  67. },
  68. // 同意协议
  69. handleAgreePrivacyAuthorization() {
  70. this.showPrivacy = false
  71. this.$emit('exit', true)
  72. }
  73. }
  74. }
  75. </script>
  76. <style scoped lang="scss">
  77. .box{
  78. padding: 45rpx;
  79. .title{
  80. text-align: center;
  81. font-weight: 700;
  82. font-size: 30rpx;
  83. }
  84. .des {
  85. font-size: 26rpx;
  86. color: #666;
  87. margin-top: 40rpx;
  88. text-align: justify;
  89. line-height: 1.6;
  90. .link {
  91. color: #013369;
  92. text-decoration: underline;
  93. }
  94. }
  95. .btns {
  96. margin-top: 48rpx;
  97. display: flex;
  98. .item {
  99. justify-content: space-between;
  100. width: 244rpx;
  101. height: 80rpx;
  102. display: flex;
  103. align-items: center;
  104. justify-content: center;
  105. border-radius: 16rpx;
  106. box-sizing: border-box;
  107. border: none;
  108. }
  109. .reject {
  110. background: #f4f4f5;
  111. color: #909399;
  112. }
  113. .agree {
  114. background: #013369;
  115. color: #fff;
  116. }
  117. }
  118. button{
  119. &::after{
  120. border: none;
  121. }
  122. }
  123. }
  124. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/292250
推荐阅读
相关标签
  

闽ICP备14008679号