diff --git a/packages/uni-cli-shared/components/ad.mixin.mp.js b/packages/uni-cli-shared/components/ad.mixin.mp.js index f250d01cd34d48bbe07461e503550f6ca8a1a13a..8c50d3a80adcc6bb19afa319b012199dec77ebeb 100644 --- a/packages/uni-cli-shared/components/ad.mixin.mp.js +++ b/packages/uni-cli-shared/components/ad.mixin.mp.js @@ -27,6 +27,12 @@ export default { loadnext: { type: [Boolean, String], default: false + }, + urlCallback: { + type: Object, + default () { + return {} + } } }, data () { @@ -58,7 +64,31 @@ export default { show () { this.errorMessage = null this._ad = this.selectComponent('.uniad-plugin') - this._ad.show() + if (this._hasCallback()) { + const userCryptoManager = wx.getUserCryptoManager() + userCryptoManager.getLatestUserKey({ + success: ({ + encryptKey, + iv, + version, + expireTime + }) => { + this._ad.show({ + userId: this.urlCallback.userId || '', + extra: this.urlCallback.extra || '', + encryptKey, + iv, + version, + expireTime + }) + }, + fail: (err) => { + this._dispatchEvent(EventType.Error, err) + } + }) + } else { + this._ad.show() + } }, _onclick () { @@ -80,6 +110,10 @@ export default { return result }, + _hasCallback () { + return (typeof this.urlCallback === 'object' && Object.keys(this.urlCallback).length > 0) + }, + _onmpload (e) { this.loading = false this._dispatchEvent(EventType.Load, {}) @@ -87,6 +121,31 @@ export default { _onmpclose (e) { this._dispatchEvent(EventType.Close, e.detail) + if (e.detail.adsdata) { + const adv = e.detail.adv + const adsdata = e.detail.adsdata + const version = e.detail.version + + /* eslint-disable no-undef */ + uniCloud.callFunction({ + name: 'uniAdCallback', + data: { + adv: adv, + adsdata: adsdata, + version: version + }, + secretType: 'both', + success: (res) => { + }, + fail: (err) => { + this._dispatchEvent(EventType.Error, err) + } + }) + + delete e.detail.adv + delete e.detail.adsdata + delete e.detail.version + } }, _onmperror (e) {