适配小程序隐私保护指引设置

news/2024/7/20 2:28:47 标签: 小程序

由于小程序发布了一个公告,那么接下来就是怎么改简单的问题了。毕竟不太想大的改动历史上的代码。尽量简单的适配隐私策略就可以了。

整体思路也是参考现在App普遍的启动就让用户同意隐私策略,不同意不让用,同意了之后才能够继续使用。

公告内容
参考文档

整体思路

整体思路如下:

  1. 在app.js中检查是否已经读过;
  2. 如果没读过,直接跳转到隐私策略页面(隐私策略页面自定义导航且没有返回按钮,为了防止Android的侧边滑动退出,在onUnLoad里边判断一下,如果没同意在跳转到隐私策略一面);
  3. 如果点击确定则退页继续正常流程;
  4. 如果点击拒绝,弹出一个不确定无法继续使用的提示。

如此来做的话仅需要增加一个 privacy 的页面,然后在app.js里边跳进这个页面来适配隐私策略。

效果如下:

在这里插入图片描述

详细实现

app.js内容

在app.js里边增加一个检测隐私的函数:

checkPrivacy() {
  if (!wx.canIUse('getPrivacySetting')) {
    return
  }
  wx.getPrivacySetting({
    success: res => {
        console.log("是否需要授权:", res.needAuthorization, "隐私协议的名称为:", res.privacyContractName)
        if (res.needAuthorization) {
          wx.navigateTo({
            url: `/pages/privacy`,
          })
          // wx.reLaunch({
          //   url: '/pages/privacy',
          // })
        } 
    },
    fail: () => { },
    complete: () => { },
  })
}

在App的onLaunch中调用一下

setTimeout(() => {
  this.checkPrivacy()
}, 500);

privacy 页面内容

privacy.js 内容

// pages/privacy.js
Page({
  isAgree: false,
  resolvePrivacyAuthorization: null,
  onLoad(options) {
    console.log('onload ', options)
    wx.onNeedPrivacyAuthorization(resolve => {
      console.log('onNeedPrivacyAuthorization ', resolve)
      this.resolvePrivacyAuthorization = resolve
    })
    wx.requirePrivacyAuthorize()
  },
  onUnload() {
    if (!this.isAgree) {
      console.log('not agree')
      wx.navigateTo({
        url: `/pages/privacy`,
      })
    }
  },
  handleDisagree: function(event) {
    console.log('handleDisagree')

    this.resolvePrivacyAuthorization({ event: 'disagree' })

    wx.exitMiniProgram()
  },
  handleAgree: function(event) {
    console.log('handleAgree')
    this.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' })
    this.isAgree = true
    wx.navigateBack()
  },
  openPrivacyContract() {
    wx.openPrivacyContract({
      success: res => {
        console.log('openPrivacyContract success')
      },
      fail: res => {
        console.error('openPrivacyContract fail', res)
      }
    })
  }
})

privacy.json 内容

{
  "navigationStyle": "custom",
  "usingComponents": {}
}

privacy.wxml 内容

<!--pages/privacy.wxml-->
<view class="container">
  <view>用户隐私保护提示</view>
  <view>感谢您使用本游戏,您使用本游戏前应当阅井同意</view>
  <button class="goToPrivacy" bind:tap="openPrivacyContract">《用户隐私保护指引》</button>
  <view>当您点击同意并开始时用产品服务时,即表示你已理解并同息该条款内容,该条款将对您产生法律约束力。如您拒绝,将无法进入游戏。</view>

  <button id="disagree-btn"
    style="margin-top: 30rpx;"
    type="default"
    class="weui-btn"
    bindtap="handleDisagree"
  >不同意并退出</button>
  <button id="agree-btn"
    type="default"
    open-type="agreePrivacyAuthorization"
    class="weui-btn"
    bindagreeprivacyauthorization="handleAgree"
  >同意并继续</button>
</view>

privacy.wxss 内容

/* pages/privacy.wxss */

.container {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  padding: 220rpx 40rpx;
}

.goToPrivacy {
  width: 670rpx !important;
  margin: 20rpx 0;
  font-size: 28rpx;
}

http://www.niftyadmin.cn/n/4970392.html

相关文章

Linux下的Shell基础——流程控制(三)

前言&#xff1a; 每门编程都有它独特的语法&#xff0c;比如C语言&#xff0c;Java等编程语言&#xff0c;有相同的地方也有自己独特的地方&#xff0c;但都离不开变量、运算符&#xff0c;条件判断、循环和函数这几个地方的学习&#xff0c;下面就让我们学习一下shell编程里…

ubuntu20.04中ros2安装rosbridge及启动方式

ros2 启动rosbridge&#xff1a; 要启动ROS2中的rosbridge&#xff0c;需要先安装ROS2的rosbridge_suite软件包。使用以下命令安装&#xff1a; sudo apt-get update sudo apt-get install ros-<distro>-rosbridge-suite将<distro>替换为正在使用的ROS2发行版的名…

代码随想录算法训练营第17期第32天 | 122. 买卖股票的最佳时机 II、455.分发饼干、376. 摆动序列、53. 最大子序和

122. 买卖股票的最佳时机 II 我好像记得这道题是怎么写的&#xff0c;也不知道是福是祸 1. 收集每天的正利润就可以&#xff0c;收集正利润的区间&#xff0c;就是股票买卖的区间&#xff0c;而我们只需要关注最终利润&#xff0c;不需要记录区间 2.局部最优&#xff1a;收集…

胜券汇:运营商有望引领国内AI信创加速

8月20日&#xff0c;中国电信发布《中国电信AI算力服务器&#xff08;2023-2024年&#xff09;会集收购项目会集资历预审公告》。胜券汇研报点评称&#xff0c;中国电信集采4175台AI算力服务器&#xff0c;数量大幅增加&#xff0c;佐证AI服务器高景气量。估计国产占比约47%&am…

springboot RabbitMQ客户端连接故障恢复

最近做RabbitMQ故障演练发现RabbitMQ服务器停止后&#xff0c;基于springboot的消费端不可以自动的恢复&#xff0c;队列的消费者消失&#xff0c;消息一直积压到队列中&#xff0c;这种情况肯定是不可接收的&#xff1b;通过研究源代码找到了解决方案。 一、添加自动恢复配置a…

Spring与Mybatis集成且Aop整合

目录 一、集成 1.1 集成的概述 1.2 集成的优点 1.3 代码示例 二、整合 2.1 整合概述 2.2 整合进行分页 一、集成 1.1 集成的概述 集成是指将不同的组件、部分或系统组合在一起&#xff0c;以形成一个整体功能完整的解决方案。它是通过连接、交互和协调组件之间的关系来实…

List常用的操作

1、看List里是否存在某个元素 contains //省略建立listboolean contains stringList.contains("上海");System.out.println(contains); 如果存在是true&#xff0c;不存在是false 2、看某个元素在List中的索引号 .indexOf List<String>stringList new Ar…

用C/C++修改I2C默认的SDA和SCL针脚

首先要说明一点&#xff1a;Pico 有两个 I2C&#xff0c;也就是两套 SDA 和 SCL。这点你可以在针脚图中名字看出&#xff0c;比如下图的 Pin 4 和 Pin 5是 I2C1 的&#xff0c;而默认的 Pin 6 和 Pin 7 是 I2C0 的。 默认情况下是只开启了第一个 I2C&#xff0c;也就是只有 I2C…