my.onneedprivacyauthorization(function listener)
基础库 或更高版本; 若版本较低,建议采取 兼容处理 。
支小宝客户端 支持
安诊儿客户端 支持
主体: 企业支付宝小程序 、 个人支付宝小程序
监听隐私接口需要用户授权事件。
开发者需要在监听函数中弹出自定义隐私弹窗,在用户点击同意/拒绝后,再通过调用 resolve 通知触发了 needprivacyauthorization 后处于 pending 状态的隐私接口或组件继续执行。
注意:my.onneedprivacyauthorization 是覆盖式注册监听,重复调用只有最后一次生效。
function listener
隐私接口需要用户授权事件的监听函数。
参数
function resolve
隐私授权结果回调接口。
needprivacyauthorization 事件触发后,触发该事件的隐私接口或组件会处于 pending 状态:
- 如果调用 resolve({ event: 'agree', buttonid: 'agree-btn' }),则 pending 的隐私接口或组件会继续执行。其中 buttonid 为隐私同意授权按钮的 id。请在
resolve 参数对象的属性:
属性 | 类型 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
event | string | 用户操作类型 |
||||||||||
|
||||||||||||
buttonid | string | 同意授权按钮的 id(仅event=agree时必填) |
object eventinfo
触发本次 needprivacyauthorization 事件的关联信息。包含以下属性:
属性 | 类型 | 描述 |
---|---|---|
referrer | string | 触发本次 onneedprivacyauthorization 事件的接口或组件 |
<view a:if="{{showprivacy}}">
<view>隐私弹窗内容....</view>
<button id="agree-btn" open-type="agreeprivacyauthorization" onagreeprivacyauthorization="handleagreeprivacyauthorization">同意</button>
</view>
page({
data: {
showprivacy: false
},
onload() {
my.onneedprivacyauthorization((resolve, eventinfo) => {
console.log('触发本次事件的接口是:' eventinfo.referrer)
// 需要用户同意隐私授权时
// 弹出开发者自定义的隐私授权弹窗
this.setdata({
showprivacy: true
})
this.resolveprivacyauthorization = resolve
})
my.getlocation({
type: 1,
success: (res) => {
console.log(res);
},
fail: (res) => {
my.alert({ title: '定位失败', content: json.stringify(res) });
},
})
},
handleagreeprivacyauthorization() {
// 用户点击同意按钮后
this.resolveprivacyauthorization({ buttonid: 'agree-btn', event: 'agree' })
// 用户点击同意后,开发者调用 resolve({ buttonid: 'agree-btn', event: 'agree' }) 告知平台用户已经同意,参数传同意按钮的id。为确保用户有同意的操作,基础库在 resolve 被调用后,会去检查对应的同意按钮有没有被点击过。检查通过后,相关隐私接口会继续调用
// 用户点击拒绝后,开发者调用 resolve({ event:'disagree' }) 告知平台用户已经拒绝
}
})
q:什么时候会触发 needprivacyauthorization 事件?
场景一:调用隐私相关接口(比如 my.getlocation、my.getclipboard)和组件(比如 ),并且用户还未同意过隐私协议时。
场景二: 调用 my.requireprivacyauthorize 接口来模拟隐私接口调用,并且用户还未同意过隐私协议时。
注意:如果用户已经同意过隐私协议,则不会再触发 onneedprivacyauthorization 事件。
q:一定要注册 my.onneedprivacyauthorization 监听以及调用 resolve 吗?
不是的,如果能保证在调用隐私接口之前,用户已经点击过