diff --git a/packages/uni-cli-shared/components/ad.mixin.mp.js b/packages/uni-cli-shared/components/ad.mixin.mp.js index f250d01cd34d48bbe07461e503550f6ca8a1a13a..1b59851489d17b63ed1ce7d55146146e55aca965 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,11 @@ export default { return result }, + _hasCallback () { + return false + // return (typeof this.urlCallback === 'object' && Object.keys(this.urlCallback).length > 0) + }, + _onmpload (e) { this.loading = false this._dispatchEvent(EventType.Load, {}) @@ -87,6 +122,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) { diff --git a/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js b/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js index 4417a5d1eca1a9f17a58eb467271dfdbcf05da9d..ab1511d90624d89a3c0cc2ff908a5c5dca0dacbf 100644 --- a/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js +++ b/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js @@ -4,8 +4,8 @@ module.exports = function (appJson) { } if (!appJson.plugins['uni-ad']) { appJson.plugins['uni-ad'] = { - version: '1.1.0', - provider: 'wx999bf02c8e05dfc9' + version: '1.0.0', + provider: 'wxf72d316417b6767f' } } if (!appJson.plugins['coral-adv']) { diff --git a/src/core/runtime/wrapper/util.js b/src/core/runtime/wrapper/util.js index 4ffa28caa98c22c90e5f2132e7b25b619156c066..ec1a8ba366ebce2a7d77b89ba8c2add2a662eb53 100644 --- a/src/core/runtime/wrapper/util.js +++ b/src/core/runtime/wrapper/util.js @@ -142,7 +142,7 @@ export function initData (vueOptions, context) { try { // 对 data 格式化 data = JSON.parse(JSON.stringify(data)) - } catch (e) {} + } catch (e) { } } if (!isPlainObject(data)) { @@ -332,7 +332,7 @@ function wrapper (event) { // TODO 又得兼容 mpvue 的 mp 对象 try { event.mp = JSON.parse(JSON.stringify(event)) - } catch (e) {} + } catch (e) { } event.stopPropagation = noop event.preventDefault = noop @@ -413,7 +413,7 @@ function getExtraValue (vm, dataPathsArray) { return context } -function processEventExtra (vm, extra, event) { +function processEventExtra (vm, extra, event, __args__) { const extraObj = {} if (Array.isArray(extra) && extra.length) { @@ -436,11 +436,7 @@ function processEventExtra (vm, extra, event) { if (dataPath === '$event') { // $event extraObj['$' + index] = event } else if (dataPath === 'arguments') { - if (event.detail && event.detail.__args__) { - extraObj['$' + index] = event.detail.__args__ - } else { - extraObj['$' + index] = [event] - } + extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__ } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event) } else { @@ -467,6 +463,12 @@ function getObjByArray (arr) { function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) { let isCustomMPEvent = false // wxcomponent 组件,传递原始 event 对象 + + // fixed 用户直接触发 mpInstance.triggerEvent + const __args__ = isPlainObject(event.detail) + ? event.detail.__args__ || [event.detail] + : [event.detail] + if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && event.currentTarget.dataset && @@ -475,11 +477,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam if (isCustomMPEvent) { return [event] } - return event.detail.__args__ || event.detail + return __args__ } } - const extraObj = processEventExtra(vm, extra, event) + const extraObj = processEventExtra(vm, extra, event, __args__) const ret = [] args.forEach(arg => { @@ -488,7 +490,7 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam ret.push(event.target.value) } else { if (isCustom && !isCustomMPEvent) { - ret.push(event.detail.__args__[0]) + ret.push(__args__[0]) } else { // wxcomponent 组件或内置组件 ret.push(event) } diff --git a/src/core/service/api/ui/create-selector-query.js b/src/core/service/api/ui/create-selector-query.js index 06243900425bc387dbb502afc33047f456b81321..37c6fe4ffd8e03d2b0a85cc4bd9ce0b333a70e56 100644 --- a/src/core/service/api/ui/create-selector-query.js +++ b/src/core/service/api/ui/create-selector-query.js @@ -92,6 +92,7 @@ class SelectorQuery { this._page = page this._queue = [] this._queueCb = [] + this._nodesRef = null } exec (callback) { @@ -110,6 +111,8 @@ class SelectorQuery { }) isFn(callback) && callback.call(this, res) }) + + return this._nodesRef } ['in'] (component) { @@ -119,15 +122,15 @@ class SelectorQuery { } select (selector) { - return new NodesRef(this, this._component, selector, true) + return (this._nodesRef = new NodesRef(this, this._component, selector, true)) } selectAll (selector) { - return new NodesRef(this, this._component, selector, false) + return (this._nodesRef = new NodesRef(this, this._component, selector, false)) } selectViewport () { - return new NodesRef(this, 0, '', true) + return (this._nodesRef = new NodesRef(this, 0, '', true)) } _push (selector, component, single, fields, callback) {