- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
最近小程序又新增了个 隐私协议弹窗。需要用户去授权,官网的一些API才能使用。 官网地址 。
。
项目地址: https://ext.dcloud.net.cn/plugin?id=14358 。
"mp-weixin" : { // 小程序隐私协议 "__usePrivacyCheck__": true },
注:小程序运行会报 无效的 app.json ["__usePrivacyCheck__"] ,有说切换基础库调试,但是这个提示一直在,不影响代码的运行 。
创建components文件夹下,创建privacy-popup文件夹与privacy-popup.vue.
主要通过 wx.onNeedPrivacyAuthorization 接口来监听何时需要提示用户阅读隐私政策.
调用 wx.openPrivacyContract 接口打开隐私协议页面为空白,具体原因还不清楚。可能是个人原因.
注:微信公众平台—设置—找到—用户隐私保护指引。添加协议内容,等待审核通过.
<!-- * @author: Jay * @description: 小程序隐私协议 弹窗 * @createTime: 2023-08-31 10:07:54 --> <template> <view v- if ="showPop"> <view class="privacy-mask"> <view class="privacy-wrap"> <view class="privacy-title"> 用户隐私保护提示 </view> <view class="privacy-desc"> 感谢您使用本小程序,在使用前您应当阅读井同意 <text class="privacy-link" @tap="openPrivacyContract">《用户隐私保护指引》</text>, 当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。 </view> <view class="privacy-button-flex"> <button class="privacy-button-btn bg-disagree" @tap="handleDisagree"> 不同意 </button> <button id="agree-btn" class="privacy-button-btn bg-agree" open-type="agreePrivacyAuthorization" @agreeprivacyauthorization ="handleAgree"> 同意并继续 </button> </view> </view> </view> </view> </template> <script> export default { data() { return { showPop: false , privacyAuthorization: null , privacyResolves: new Set(), closeOtherPagePopUpHooks: new Set(), } }, mounted() { this .init() this .curPageShow() }, created() { // 查询微信侧记录的用户是否有待同意的隐私政策信息 wx.getPrivacySetting({ success(res) { console.log( '隐私政策信息' , res) // if (res.needAuthorization) { // //打开弹窗 // that.popUp() // } } }); }, methods: { // 监听何时需要提示用户阅读隐私政策 init() { let that = this ; if (wx.onNeedPrivacyAuthorization) { wx.onNeedPrivacyAuthorization((resolve) => { if ( typeof that.privacyAuthorization === 'function' ) { that.privacyAuthorization(resolve) } }) } }, // 初始化监听程序 curPageShow() { this .privacyAuthorization = resolve => { this .privacyResolves.add(resolve) // 打开弹窗 this .popUp() // 额外逻辑:当前页面的隐私弹窗弹起的时候,关掉其他页面的隐私弹窗 this .closeOtherPagePopUp( this .disPopUp) } this .closeOtherPagePopUpHooks.add( this .disPopUp) }, // 额外逻辑:当前页面的隐私弹窗弹起的时候,关掉其他页面的隐私弹窗 closeOtherPagePopUp(closePopUp) { this .closeOtherPagePopUpHooks.forEach(hook => { if (closePopUp !== hook) { hook() } }) }, // 打开隐私协议 openPrivacyContract() { wx.openPrivacyContract({ success(res) { console.log( '打开隐私协议' , res); }, fail(err) { console.error( '打开隐私协议失败' , err) } }); }, // 不同意 handleDisagree() { this .privacyResolves.forEach(resolve => { resolve({ event: 'disagree' , }) }) this .privacyResolves.clear() // 关闭弹窗 this .disPopUp() // 退出小程序 // wx.exitMiniProgram(); }, // 同意并继续 handleAgree() { this .privacyResolves.forEach(resolve => { resolve({ event: 'agree' , buttonId: 'agree-btn' }) }) this .privacyResolves.clear() // 关闭弹窗 this .disPopUp() }, // 打开弹窗 popUp() { if ( this .showPop === false ) { this .showPop = true } }, // 关闭弹窗 disPopUp() { if ( this .showPop === true ) { this .showPop = false } }, } } </script> <style lang="scss" scoped> .privacy - mask { position: fixed; z -index: 5000 ; top: 0 ; right: 0 ; left: 0 ; bottom: 0 ; background: rgba( 0, 0, 0, 0.2 ); display: flex; align - items: center; justify - content: center; } .privacy - wrap { width: 632rpx; padding: 48rpx 30rpx; box -sizing: border- box; background: #fff; border - radius: 16rpx; } .privacy - title { padding: 0rpx 30rpx 40rpx 30rpx; font -weight: 700 ; font - size: 36rpx; text - align: center; } .privacy - desc { font - size: 30rpx; color: # 555 ; line -height: 2 ; text - align: left; padding: 0 40rpx; } .privacy - link { color: #2f80ed; } .privacy -button- flex { display: flex; padding: 20rpx 40rpx; } .privacy -button- btn { color: #FFF; font - size: 30rpx; font -weight: 500 ; line - height: 100rpx; text - align: center; height: 100rpx; border - radius: 20rpx; border: none; background: #07c160; flex: 1 ; margin - right: 30rpx; justify - content: center; } .privacy -button- btn::after { border: none; } .bg - disagree { color: #07c160; background: #f2f2f2; } .bg - agree { margin - right: 0rpx; } </style>
在登录或其他需要调用微信API的页面到处插件 。
或者在APP.vue全局导入插件 。
注:插件导入即可,触发微信API方可自动调用,打开协议弹窗 。
<template> <view> <!-- #ifdef MP-WEIXIN --> <!-- 小程序隐私协议 --> <privacy-popup></privacy-popup> <!-- #endif --> </view> </template> <script> // 小程序隐私协议 import PrivacyPopup from "@/components/privacy-popup/privacy-popup.vue" export default { data() {}, components: { PrivacyPopup }, } </script> <style lang="scss" scoped> </style>
微信原生开发可使用该组件: https://juejin.cn/post/7272276908381175819 ,参照改成更适合uni体质的组件.
最后此篇关于uni微信小程序隐私协议的文章就讲到这里了,如果你想了解更多关于uni微信小程序隐私协议的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
internal protocol Reducer { associatedtype S : BaseState associatedtype A : BaseActi
我在考虑我的应用程序中的验证检查,我认为在任何模型上调用 ValidatorFactory,实现 Validee,这意味着说哪个类负责 ValidatorCreation 听起来不错。但是下面的代码不
我已经定义了 2 个协议(protocol)。我需要第一个 (NameProtocol) 来执行 Equatable 协议(protocol)。而另一个类 (BuilderProtocol) 有一个返
在上传方面,WebDAV 协议(protocol)在哪些方面优于 HTTP 协议(protocol)。 Socket Upload 协议(protocol)和 WebDav Upload 协议(pro
是否可以在任何版本的 Swift 中扩展具有混合类/协议(protocol)类型约束的协议(protocol)?例如,仅当 Self 是 UIViewController 的子类并且符合 Protoc
我有一个协议(protocol) (ProtocolA),其中包含符合第二个协议(protocol) (ProtocolB) 的单个属性。 public protocol ProtocolA {
NSObject 协议(protocol)带有常用的协议(protocol)模板,但它似乎并不是协议(protocol)实际实现所必需的。将其排除在外似乎完全没有任何改变。那么,协议(protocol
我想根据这两种协议(protocol)的一般特征(例如开销(数据包)、安全性、信息建模和可靠性)来比较 OPC UA 和 MQTT。我在哪里可以找到每个协议(protocol)的开销和其他特性的一些示
使用 Swift 4,我正在尝试编写一个自定义协议(protocol),它提供对 @objc 协议(protocol)的一致性。 一些代码 更具体地说,我有一个自定义协议(protocol) Sear
我想定义一个在 Viper 架构中使用的协议(protocol),以使用具有弱属性的协议(protocol)在 Viper 组件之间建立连接,但我收到以下错误消息: 'weak' may only b
我在同一个网络中有 3 个 docker 容器: 存储 (golang) - 它提供了用于上传视频文件的 API。 主播 (nginx) - 它流式传输上传的文件 反向代理 (姑且称之为代理) 我有
我打算在我的项目中使用 php socket。它需要用户登录才能根据 session 填充内容。所以我的问题是,TCP/IP 协议(protocol)也像 HTTP 协议(protocol)一样为每个
目前,我的网站有两个版本。一种带有 https://-证书,一种没有。我想将我网站的 http 版本上的所有用户 301 重定向到我网站的 https://版本。 这似乎不可能,因为创建重定向将导致重
目前,我的网站有两个版本。一种带有 https://-证书,一种没有。我想将我网站的 http 版本上的所有用户 301 重定向到我网站的 https://版本。 这似乎不可能,因为创建重定向将导致重
我有一个 Swift View Controller ,它定义了一个在 Objective-C View Controller 中应该遵循的协议(protocol): ChildViewControl
我在客户那里有数百个硬件设备,需要通过telnet接口(interface)发送HTTP数据。 目标是等待数据的 Apache 2 Web 服务器和 PHP 脚本。 这已经可以正常工作了,但是我们发现
我发现如果我创建一个这样的协议(protocol): protocol MyProtocol { } 我不能这样做: weak var myVar: MyProtocol? 我找到了解决这个问题的方法
Xcode 基于模板生成了这个头文件: // this file is XYZAppDelegate.h #import @interface XYZAppDelegate : UIRespond
我在 github 中有一个公开的存储库,我正在开发一个开源应用程序,用于制作产品目录和小型 cms 内容。 我还有一个私有(private)仓库(不托管在github),它是在托管在github的开
您好,我想让别人看到私有(private) repo 代码,但不想公开我的 repo ,也不希望他们有能力更改内容。这可能吗?我查看了网站的“管理”部分,但没有找到合适的内容。谢谢大家。 最佳答案 据
我是一名优秀的程序员,十分优秀!