前言
微信小程序要求9.15日前实现隐私政策弹窗,但是uniapp文档一直没有更新,尝试直接使用wx.onNeedPrivacyAuthorization
,是可以生效的
步骤
- 在 微信小程序后台 的
设置--服务内容与声明
,设置好小程序所需要的隐私政策 - 在
uniapp
的manifest.json
中选择源码视图
添加设置:
json
"mp-weixin": {
// ...
"__usePrivacyCheck__": true
},
- 微信开发者工具的调试基础库,最好
>=3.0
- 在你调用隐私接口的页面中,写入一下代码:
js
wx.getPrivacySetting({
success: res => {
console.log("是否需要授权:", res.needAuthorization, "隐私协议的名称为:", res.privacyContractName)
},
fail: () => {},
complete: () => {},
})
如果看到 是否需要授权:true
,则说明配置生效,可以直接新建你的通用组件,并实现,以下为简单原理示例代码,非完整业务代码,仅供参考:
js
<template>
<view class="privacy-menu">
<view class="privacy-menu-button" @click="handleDisagree">取消</view>
<button id="agree-btn" class="privacy-menu-button agree-button" open-type="agreePrivacyAuthorization"
@agreeprivacyauthorization="handleAgree">同意并继续</button>
</view>
</template>
<script>
let privacyHandler
wx.onNeedPrivacyAuthorization(resolve => {
console.log("触发:onNeedPrivacyAuthorization")
if (typeof privacyHandler === 'function') {
privacyHandler(resolve)
}
})
export default {
data() {
return {
urlTitle: ''
}
},
mounted() {
privacyHandler = resolve => {
if (wx.getPrivacySetting) {
wx.getPrivacySetting({
success: res => {
console.log("是否需要授权:", res.needAuthorization, "隐私协议的名称为:", res.privacyContractName)
if (res.needAuthorization) {
this.urlTitle = res.privacyContractName
// 其他操作,如显示隐私政策弹窗
} else {
this.$emit("agree")
}
},
fail: () => {},
complete: () => {},
})
} else {
// 低版本基础库不支持 wx.getPrivacySetting 接口,隐私接口可以直接调用
this.$emit("agree")
}
}
}
}
</script>