tt.onNeedPrivacyAuthorization
基础库 3.19.0 开始支持本方法,低版本需做兼容处理,抖音开发者工具 4.2.3 及以上开始支持此能力调试,这是一个同步方法。
监听隐私接口需要用户授权事件。当需要用户进行隐私授权时会触发。触发该事件时,开发者需要弹出隐私协议说明,并在用户同意或拒绝授权后调用回调接口 resolve 触发原隐私接口或组件继续执行。隐私合规开发指南详情可见 《小程序隐私协议开发指南》
前提条件 | 无 |
业务背景 | 无 |
使用限制 | 无 |
注意事项 | 无 |
支持沙盒 | 否 |
相关教程 | 无 |
语法
tt.onNeedPrivacyAuthorization(callback)
参数说明
callback
类型 | 默认值 | 必填 | 说明 | 最低 支持版本 |
---|---|---|---|---|
function | 是 | 隐私接口需要用户授权事件的监听函数 | 3.19.0 |
callback 是一个回调函数,接收类型参数如下:
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
resolve | function | 隐私授权结果回调接口。 当触发 onNeedPrivacyAuthorization 事件时,触发该事件的隐私接口或组件会处于 pending 状态。 如果调用 resolve({ buttonId: 'agree-btn', event:'agree' }),则触发当前 onNeedPrivacyAuthorization 事件的原隐私接口或组件会继续执行。其中 buttonId 为隐私同意授权按钮的 id,为确保用户有同意的操作,基础库会检查对应的同意按钮是否被点击过。(Tips: 需要在<button open-type="agreePrivacyAuthorization"> 组件的 bindagreeprivacyauthorization 事件触发后再调用 resolve({ buttonId: 'agree-btn', event:'agree' })) 如果调用 resolve({ event: 'disagree' }),则触发当前 onNeedPrivacyAuthorization 事件的原隐私接口或组件会失败并返回 API:fail privacy permission is not authorized 的错误信息。 | 3.19.0 |
eventInfo | object | eventInfo 是 onNeedPrivacyAuthorization 的第二个回调参数,表示触发本次 onNeedPrivacyAuthorization 事件的关联信息 | 3.19.0 |
resolve 类型说明
是一个回调函数,接收类型参数如下:
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
params | object | resolve内的参数 | 3.19.0 |
params 类型说明
object 类型,属性如下:
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
event | enum | 用户操作类型 | 3.19.0 |
buttonId | string | 同意授权按钮的 id (仅 event=agree 时必填) | 3.19.0 |
event 的合法值
值 | 说明 | 最低支持版本 |
---|---|---|
agree | 用户同意隐私授权 | 3.19.0 |
disagree | 用户拒绝隐私授权 | 3.19.0 |
eventInfo 类型说明
object 类型,属性如下:
属性名 | 类型 | 说明 | 最低支持版本 |
---|---|---|---|
referrer | string | 触发本次 onNeedPrivacyAuthorization 事件的接口或组件名(例如:"getUserProfile", "button-getPhoneNumber") | 3.19.0 |
返回值
扫码体验
代码示例
// page.ttml <view class="page-popup" tt:if="{{showPrivacy}}"> <view class="page-popup-content">隐私弹窗内容....</view> <button class="page-popup-footer-button" type="primary" id="agree-btn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button> </view>
Page({ data: { hasLocation: false, showPrivacy: false, }, resolveHandler: [], // 同时调用多个隐私能力时,需提前保留 resolve 回调函数 onLoad() { tt.onNeedPrivacyAuthorization((resolve, eventInfo) => { console.log('eventInfo.referrer:', eventInfo.referrer); this.resolveHandler.push(resolve); this.setData({ showPrivacy: true }); }) }, handleAgreePrivacyAuthorization() { // 用户点击同意按钮后 this.resolveHandler.forEach((_resolve) => { _resolve({ buttonId: 'agree-btn', event: 'agree' }); }); // 用户点击同意后,开发者调用 resolve({ buttonId: 'agree-btn', event: 'agree' }) 告知平台用户已经同意,参数传同意按钮的id。为确保用户有同意的操作,基础库在 resolve 被调用后,会去检查对应的同意按钮有没有被点击过。检查通过后,相关隐私接口会继续调用 // 用户点击拒绝后,开发者调用 resolve({ event:'disagree' }) 告知平台用户已经拒绝 this.setData({ showPrivacy: false }); }, });