jyj-components 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -66,7 +66,8 @@ https://wxgo.adwke.com
66
66
  "ad-banner": "jyj-components/ad-banner/index",
67
67
  "ad-interstitial": "jyj-components/ad-interstitial/index",
68
68
  "ad-rewarded-video": "jyj-components/ad-rewarded-video/index",
69
- "ad-splash": "jyj-components/ad-splash/index"
69
+ "ad-splash": "jyj-components/ad-splash/index",
70
+ "ad-h5": "jyj-components/ad-h5/index"
70
71
  }
71
72
  }
72
73
  ```
@@ -329,6 +330,22 @@ Page({
329
330
  });
330
331
  ```
331
332
 
333
+ #### H5页面广告
334
+
335
+ **H5页面示例:**
336
+
337
+ ```wxml
338
+ <ad-h5
339
+ wx:if="{{showH5}}"
340
+ slotId="your-slot-id"
341
+ bind:adLoad="onAdLoad"
342
+ bind:adError="onAdError"
343
+ bind:adFinished="onAdFinished" />
344
+ ```
345
+ {{showH5}}为可选项 不设置就是直接展示
346
+
347
+
348
+
332
349
  ## 注意事项
333
350
 
334
351
  1. **授权配置**:向运营人员获取授权链接,通过授权链接授权权限
@@ -338,6 +355,11 @@ Page({
338
355
  5. **合法域名**:务必在微信公众平台配置合法域名,否则广告无法正常加载
339
356
 
340
357
 
358
+
359
+
360
+
361
+
362
+
341
363
  ## 常见问题
342
364
 
343
365
  ### Q: 广告不显示?
@@ -0,0 +1,539 @@
1
+ module.exports =
2
+ /******/ (function(modules) { // webpackBootstrap
3
+ /******/ // The module cache
4
+ /******/ var installedModules = {};
5
+ /******/
6
+ /******/ // The require function
7
+ /******/ function __webpack_require__(moduleId) {
8
+ /******/
9
+ /******/ // Check if module is in cache
10
+ /******/ if(installedModules[moduleId]) {
11
+ /******/ return installedModules[moduleId].exports;
12
+ /******/ }
13
+ /******/ // Create a new module (and put it into the cache)
14
+ /******/ var module = installedModules[moduleId] = {
15
+ /******/ i: moduleId,
16
+ /******/ l: false,
17
+ /******/ exports: {}
18
+ /******/ };
19
+ /******/
20
+ /******/ // Execute the module function
21
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22
+ /******/
23
+ /******/ // Flag the module as loaded
24
+ /******/ module.l = true;
25
+ /******/
26
+ /******/ // Return the exports of the module
27
+ /******/ return module.exports;
28
+ /******/ }
29
+ /******/
30
+ /******/
31
+ /******/ // expose the modules object (__webpack_modules__)
32
+ /******/ __webpack_require__.m = modules;
33
+ /******/
34
+ /******/ // expose the module cache
35
+ /******/ __webpack_require__.c = installedModules;
36
+ /******/
37
+ /******/ // define getter function for harmony exports
38
+ /******/ __webpack_require__.d = function(exports, name, getter) {
39
+ /******/ if(!__webpack_require__.o(exports, name)) {
40
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
41
+ /******/ }
42
+ /******/ };
43
+ /******/
44
+ /******/ // define __esModule on exports
45
+ /******/ __webpack_require__.r = function(exports) {
46
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
47
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
48
+ /******/ }
49
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
50
+ /******/ };
51
+ /******/
52
+ /******/ // create a fake namespace object
53
+ /******/ // mode & 1: value is a module id, require it
54
+ /******/ // mode & 2: merge all properties of value into the ns
55
+ /******/ // mode & 4: return value when already ns object
56
+ /******/ // mode & 8|1: behave like require
57
+ /******/ __webpack_require__.t = function(value, mode) {
58
+ /******/ if(mode & 1) value = __webpack_require__(value);
59
+ /******/ if(mode & 8) return value;
60
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
61
+ /******/ var ns = Object.create(null);
62
+ /******/ __webpack_require__.r(ns);
63
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
64
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
65
+ /******/ return ns;
66
+ /******/ };
67
+ /******/
68
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
69
+ /******/ __webpack_require__.n = function(module) {
70
+ /******/ var getter = module && module.__esModule ?
71
+ /******/ function getDefault() { return module['default']; } :
72
+ /******/ function getModuleExports() { return module; };
73
+ /******/ __webpack_require__.d(getter, 'a', getter);
74
+ /******/ return getter;
75
+ /******/ };
76
+ /******/
77
+ /******/ // Object.prototype.hasOwnProperty.call
78
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
79
+ /******/
80
+ /******/ // __webpack_public_path__
81
+ /******/ __webpack_require__.p = "";
82
+ /******/
83
+ /******/
84
+ /******/ // Load entry module and return exports
85
+ /******/ return __webpack_require__(__webpack_require__.s = 6);
86
+ /******/ })
87
+ /************************************************************************/
88
+ /******/ ([
89
+ /* 0 */
90
+ /***/ (function(module, exports, __webpack_require__) {
91
+
92
+ "use strict";
93
+
94
+
95
+ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
96
+
97
+ var _require = __webpack_require__(1),
98
+ getAds = _require.getAds;
99
+
100
+ module.exports = {
101
+ // 检查并重置每日数据
102
+ checkAndResetDaily: function checkAndResetDaily() {
103
+ var slotId = this.properties.slotId;
104
+ var type = this.properties.type;
105
+ var dateKey = 'adDate_' + slotId + '_' + type;
106
+
107
+ var today = new Date().toDateString();
108
+ var savedDate = wx.getStorageSync(dateKey);
109
+
110
+ // 如果日期不同,重置所有数据
111
+ if (savedDate !== today) {
112
+ var customAdIndexKey = 'customAdIndex_' + slotId + '_' + type;
113
+ var customAdShowCountKey = 'customAdShowCount_' + slotId + '_' + type;
114
+
115
+ wx.setStorageSync(dateKey, today);
116
+ wx.setStorageSync(customAdIndexKey, 1); // 自有广告从索引1开始
117
+ wx.setStorageSync(customAdShowCountKey, 0);
118
+
119
+ return true; // 表示已重置
120
+ }
121
+
122
+ return false; // 表示未重置
123
+ },
124
+ restoreAdState: function restoreAdState() {
125
+ // 检查并重置每日数据
126
+ this.checkAndResetDaily();
127
+ },
128
+ saveAdState: function saveAdState() {
129
+ var slotId = this.properties.slotId;
130
+ var type = this.properties.type;
131
+ var customAdIndexKey = 'customAdIndex_' + slotId + '_' + type;
132
+ var customAdShowCountKey = 'customAdShowCount_' + slotId + '_' + type;
133
+
134
+ // 只保存自有广告的状态(索引>0)
135
+ if (this.data.currentAdIndex > 0) {
136
+ wx.setStorageSync(customAdIndexKey, this.data.currentAdIndex);
137
+ wx.setStorageSync(customAdShowCountKey, this.data.currentAdShowCount);
138
+ }
139
+ },
140
+
141
+
142
+ // 检查微信广告是否失败(只在内存中,不持久化)
143
+ isWxAdFailed: function isWxAdFailed() {
144
+ return this.data.wxAdFailed || false;
145
+ },
146
+
147
+
148
+ // 标记微信广告失败(只在内存中,不持久化)
149
+ markWxAdFailed: function markWxAdFailed() {
150
+ this.setData({
151
+ wxAdFailed: true
152
+ });
153
+ },
154
+
155
+
156
+ // 检查所有自有广告是否都达到上限
157
+ isAllCustomAdsReachedLimit: function isAllCustomAdsReachedLimit() {
158
+ var ads = this.data.ads;
159
+ if (!ads || ads.length <= 1) return true; // 只有微信广告或没有广告
160
+
161
+ var currentIndex = this.data.currentAdIndex;
162
+ var showCount = this.data.currentAdShowCount;
163
+
164
+ // 如果当前不是自有广告,返回false
165
+ if (currentIndex === 0) return false;
166
+
167
+ // 找到最后一个有效的自有广告索引
168
+ var lastValidAdIndex = -1;
169
+ for (var i = ads.length - 1; i >= 1; i--) {
170
+ if (ads[i][this.properties.type] !== undefined) {
171
+ lastValidAdIndex = i;
172
+ break;
173
+ }
174
+ }
175
+
176
+ // 如果没有有效的自有广告,返回true
177
+ if (lastValidAdIndex === -1) return true;
178
+
179
+ // 如果当前索引已经是最后一个有效广告,且达到展示上限,返回true
180
+ if (currentIndex === lastValidAdIndex) {
181
+ var ad = ads[currentIndex];
182
+ var maxShowCount = ad.showCount || 1;
183
+ return showCount >= maxShowCount;
184
+ }
185
+
186
+ return false;
187
+ },
188
+ loadNextAd: function loadNextAd() {
189
+ var ads = this.data.ads;
190
+ if (!ads || ads.length === 0) return;
191
+
192
+ // 检查并重置每日数据
193
+ this.checkAndResetDaily();
194
+
195
+ var currentIndex = this.data.currentAdIndex;
196
+ var showCount = this.data.currentAdShowCount;
197
+
198
+ // 如果是微信广告(索引0)且未失败,直接加载微信广告
199
+ if (currentIndex === 0 && !this.isWxAdFailed()) {
200
+ var wxAd = ads[0];
201
+ if (wxAd && wxAd[this.properties.type] !== undefined) {
202
+ this.setData({ currentAd: wxAd });
203
+ return;
204
+ } else {
205
+ // 微信广告没有配置,标记为失败,切换到自有广告
206
+ this.markWxAdFailed();
207
+ currentIndex = 1;
208
+ showCount = 0;
209
+ }
210
+ }
211
+
212
+ // 如果微信广告失败,从自有广告开始
213
+ if (currentIndex === 0 && this.isWxAdFailed()) {
214
+ // 从存储中恢复自有广告的状态
215
+ var slotId = this.properties.slotId;
216
+ var type = this.properties.type;
217
+ var customAdIndexKey = 'customAdIndex_' + slotId + '_' + type;
218
+ var customAdShowCountKey = 'customAdShowCount_' + slotId + '_' + type;
219
+
220
+ currentIndex = wx.getStorageSync(customAdIndexKey) || 1;
221
+ showCount = wx.getStorageSync(customAdShowCountKey) || 0;
222
+ }
223
+
224
+ // 如果没有自有广告,不展示任何广告
225
+ if (ads.length <= 1) {
226
+ return;
227
+ }
228
+
229
+ // 检查所有自有广告是否都达到上限
230
+ if (this.isAllCustomAdsReachedLimit()) {
231
+ return;
232
+ }
233
+
234
+ // 处理自有广告的展示次数限制
235
+ var ad = ads[currentIndex];
236
+ var maxShowCount = ad.showCount || 1;
237
+
238
+ // 如果当前自有广告达到展示上限,切换到下一个
239
+ if (showCount >= maxShowCount) {
240
+ currentIndex = currentIndex + 1;
241
+ showCount = 0;
242
+
243
+ // 如果超出广告列表范围,说明所有广告都达到上限
244
+ if (currentIndex >= ads.length) {
245
+ return;
246
+ }
247
+
248
+ ad = ads[currentIndex];
249
+ }
250
+
251
+ // 检查当前广告是否有配置
252
+ if (ad[this.properties.type] === undefined) {
253
+ // 没有配置,跳过并尝试下一个
254
+ this.setData({
255
+ currentAdIndex: currentIndex + 1,
256
+ currentAdShowCount: 0
257
+ });
258
+ this.saveAdState();
259
+ this.loadNextAd();
260
+ return;
261
+ }
262
+
263
+ // 设置当前广告
264
+ this.setData({
265
+ currentAd: ad,
266
+ currentAdIndex: currentIndex,
267
+ currentAdShowCount: showCount
268
+ });
269
+ this.saveAdState();
270
+ },
271
+ report: function report(actionType) {
272
+ var slotId = this.properties.slotId;
273
+ var type = this.properties.type;
274
+ var source = this.data.currentAd.source;
275
+ var adId = this.data.currentAd.id;
276
+ var time = new Date().getTime();
277
+ wx.request({
278
+ url: 'https://wxgo.adwke.com/api/miniapp/report?slotId=' + slotId + '&type=' + type + '&source=' + source + '&actionType=' + actionType + '&adId=' + adId + '&time=' + time,
279
+ method: 'GET',
280
+ success: function success() {},
281
+ fail: function fail() {}
282
+ });
283
+ },
284
+ adLoad: function adLoad(e) {
285
+ if (e === 'undefined') {
286
+ this.triggerEvent('adClose', { msg: '广告加载成功' });
287
+ } else {
288
+ this.triggerEvent('adLoad', e.detail || {});
289
+ }
290
+ this.report('load');
291
+
292
+ // 只有自有广告(索引>0)才增加展示计数
293
+ if (this.data.currentAdIndex > 0) {
294
+ var showCount = this.data.currentAdShowCount;
295
+ this.setData({
296
+ currentAdShowCount: showCount + 1
297
+ });
298
+ this.saveAdState();
299
+ }
300
+ },
301
+ adError: function adError(e) {
302
+ // 如果是微信广告(索引0)失败,标记为失败状态
303
+ if (this.data.currentAdIndex === 0) {
304
+ this.markWxAdFailed();
305
+ }
306
+
307
+ if (e === 'undefined') {
308
+ this.triggerEvent('adError', { msg: 'ad adError' });
309
+ } else {
310
+ this.triggerEvent('adError', e);
311
+ }
312
+ },
313
+ adOpenMiniProgram: function adOpenMiniProgram() {
314
+ var _this = this;
315
+
316
+ var ad = this.data.currentAd;
317
+ var appId = ad[this.properties.type].appid || '';
318
+ var path = ad[this.properties.type].path || '';
319
+ if (appId) {
320
+ wx.navigateToMiniProgram({
321
+ appId: appId,
322
+ path: path,
323
+ success: function success() {
324
+ _this.triggerEvent('adOpenMiniProgram', { appId: appId, path: path });
325
+ },
326
+ fail: function fail(err) {
327
+ console.error('跳转小程序失败', err);
328
+ }
329
+ });
330
+ }
331
+ this.report('click');
332
+ },
333
+ initAds: function () {
334
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
335
+ var slotId, ads;
336
+ return regeneratorRuntime.wrap(function _callee$(_context) {
337
+ while (1) {
338
+ switch (_context.prev = _context.next) {
339
+ case 0:
340
+ slotId = this.properties.slotId;
341
+ _context.next = 3;
342
+ return getAds(slotId);
343
+
344
+ case 3:
345
+ ads = _context.sent;
346
+
347
+ this.setData({ ads: ads });
348
+
349
+ // 每次初始化时,总是从微信广告开始(索引0)
350
+ this.setData({
351
+ currentAdIndex: 0,
352
+ currentAdShowCount: 0
353
+ });
354
+
355
+ this.loadNextAd();
356
+
357
+ case 7:
358
+ case 'end':
359
+ return _context.stop();
360
+ }
361
+ }
362
+ }, _callee, this);
363
+ }));
364
+
365
+ function initAds() {
366
+ return _ref.apply(this, arguments);
367
+ }
368
+
369
+ return initAds;
370
+ }()
371
+ };
372
+
373
+ /***/ }),
374
+ /* 1 */
375
+ /***/ (function(module, exports, __webpack_require__) {
376
+
377
+ "use strict";
378
+
379
+
380
+ var pendingRequests = {};
381
+ var requestCache = {};
382
+
383
+ var getAds = function getAds(slotId) {
384
+ if (requestCache[slotId]) {
385
+ return Promise.resolve(requestCache[slotId]);
386
+ }
387
+
388
+ if (pendingRequests[slotId]) {
389
+ return pendingRequests[slotId];
390
+ }
391
+
392
+ var requestPromise = new Promise(function (resolve, reject) {
393
+ wx.request({
394
+ url: 'https://wxgo.adwke.com/api/miniapp/getads?slotId=' + slotId,
395
+ method: 'GET',
396
+ success: function success(res) {
397
+ if (res.statusCode === 200 && res.data) {
398
+ requestCache[slotId] = res.data.data;
399
+ resolve(res.data.data);
400
+ } else {
401
+ reject(new Error('\u8BF7\u6C42\u5931\u8D25: ' + res.statusCode + ' - ' + res.errMsg));
402
+ }
403
+ },
404
+ fail: function fail(err) {
405
+ reject(err);
406
+ },
407
+ complete: function complete() {
408
+ delete pendingRequests[slotId];
409
+ }
410
+ });
411
+ });
412
+
413
+ pendingRequests[slotId] = requestPromise;
414
+ return requestPromise;
415
+ };
416
+
417
+ module.exports = {
418
+ getAds: getAds
419
+ };
420
+
421
+ /***/ }),
422
+ /* 2 */,
423
+ /* 3 */,
424
+ /* 4 */,
425
+ /* 5 */,
426
+ /* 6 */
427
+ /***/ (function(module, exports, __webpack_require__) {
428
+
429
+ "use strict";
430
+
431
+
432
+ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
433
+
434
+ var adBase = __webpack_require__(0);
435
+
436
+ Component({
437
+ properties: {
438
+ slotId: String,
439
+ type: {
440
+ type: String,
441
+ value: 'h5'
442
+ }
443
+ },
444
+ data: {
445
+ ads: [],
446
+ currentAd: {},
447
+ currentAdIndex: 0,
448
+ currentAdShowCount: 0,
449
+ wxAdFailed: false
450
+ },
451
+ lifetimes: {
452
+ attached: function () {
453
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
454
+ var _this = this;
455
+
456
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
457
+ while (1) {
458
+ switch (_context2.prev = _context2.next) {
459
+ case 0:
460
+ setTimeout(_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
461
+ return regeneratorRuntime.wrap(function _callee$(_context) {
462
+ while (1) {
463
+ switch (_context.prev = _context.next) {
464
+ case 0:
465
+ _context.next = 2;
466
+ return adBase.initAds.call(_this);
467
+
468
+ case 2:
469
+ case 'end':
470
+ return _context.stop();
471
+ }
472
+ }
473
+ }, _callee, _this);
474
+ })), 100);
475
+
476
+ case 1:
477
+ case 'end':
478
+ return _context2.stop();
479
+ }
480
+ }
481
+ }, _callee2, this);
482
+ }));
483
+
484
+ function attached() {
485
+ return _ref.apply(this, arguments);
486
+ }
487
+
488
+ return attached;
489
+ }()
490
+ },
491
+ methods: {
492
+ checkAndResetDaily: function checkAndResetDaily() {
493
+ return adBase.checkAndResetDaily.call(this);
494
+ },
495
+ isWxAdFailed: function isWxAdFailed() {
496
+ return adBase.isWxAdFailed.call(this);
497
+ },
498
+ markWxAdFailed: function markWxAdFailed() {
499
+ adBase.markWxAdFailed.call(this);
500
+ },
501
+ isAllCustomAdsReachedLimit: function isAllCustomAdsReachedLimit() {
502
+ return adBase.isAllCustomAdsReachedLimit.call(this);
503
+ },
504
+ restoreAdState: function restoreAdState() {
505
+ adBase.restoreAdState.call(this);
506
+ },
507
+ saveAdState: function saveAdState() {
508
+ adBase.saveAdState.call(this);
509
+ },
510
+ loadNextAd: function loadNextAd() {
511
+ adBase.loadNextAd.call(this);
512
+ },
513
+ report: function report(actionType) {
514
+ adBase.report.call(this, actionType);
515
+ },
516
+ adLoad: function adLoad(e) {
517
+ adBase.adLoad.call(this, e);
518
+ },
519
+ adError: function adError(e) {
520
+ adBase.adError.call(this, e);
521
+ },
522
+ adOpenMiniProgram: function adOpenMiniProgram() {
523
+ adBase.adOpenMiniProgram.call(this);
524
+ },
525
+ handleMessage: function handleMessage(e) {
526
+ var message = e.detail.data[0];
527
+ if (message === 'close') {
528
+ this.adFinished({ detail: { msg: 'H5广告结束' } });
529
+ }
530
+ },
531
+ adFinished: function adFinished(e) {
532
+ this.triggerEvent('adFinished', e.detail || { msg: 'ad finished' });
533
+ }
534
+ }
535
+ });
536
+
537
+ /***/ })
538
+ /******/ ]);
539
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/mixins/ad-base.js","webpack:///./src/request.js","webpack:///./src/ad-h5/index.js"],"names":["require","getAds","module","exports","checkAndResetDaily","slotId","properties","type","dateKey","today","Date","toDateString","savedDate","wx","getStorageSync","customAdIndexKey","customAdShowCountKey","setStorageSync","restoreAdState","saveAdState","data","currentAdIndex","currentAdShowCount","isWxAdFailed","wxAdFailed","markWxAdFailed","setData","isAllCustomAdsReachedLimit","ads","length","currentIndex","showCount","lastValidAdIndex","i","undefined","ad","maxShowCount","loadNextAd","wxAd","currentAd","report","actionType","source","adId","id","time","getTime","request","url","method","success","fail","adLoad","e","triggerEvent","msg","detail","adError","adOpenMiniProgram","appId","appid","path","navigateToMiniProgram","err","console","error","initAds","pendingRequests","requestCache","Promise","resolve","requestPromise","reject","res","statusCode","Error","errMsg","complete","adBase","Component","String","value","lifetimes","attached","setTimeout","call","methods","handleMessage","message","adFinished"],"mappings":"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","file":"ad-h5\\index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n","const {getAds} = require('../request.js')\r\n\r\nmodule.exports = {\r\n // 检查并重置每日数据\r\n checkAndResetDaily() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const dateKey = `adDate_${slotId}_${type}`\r\n\r\n const today = new Date().toDateString()\r\n const savedDate = wx.getStorageSync(dateKey)\r\n\r\n // 如果日期不同,重置所有数据\r\n if (savedDate !== today) {\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n wx.setStorageSync(dateKey, today)\r\n wx.setStorageSync(customAdIndexKey, 1) // 自有广告从索引1开始\r\n wx.setStorageSync(customAdShowCountKey, 0)\r\n\r\n return true // 表示已重置\r\n }\r\n\r\n return false // 表示未重置\r\n },\r\n\r\n restoreAdState() {\r\n // 检查并重置每日数据\r\n this.checkAndResetDaily()\r\n },\r\n\r\n saveAdState() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n // 只保存自有广告的状态(索引>0)\r\n if (this.data.currentAdIndex > 0) {\r\n wx.setStorageSync(customAdIndexKey, this.data.currentAdIndex)\r\n wx.setStorageSync(customAdShowCountKey, this.data.currentAdShowCount)\r\n }\r\n },\r\n\r\n // 检查微信广告是否失败(只在内存中,不持久化)\r\n isWxAdFailed() {\r\n return this.data.wxAdFailed || false\r\n },\r\n\r\n // 标记微信广告失败(只在内存中,不持久化)\r\n markWxAdFailed() {\r\n this.setData({\r\n wxAdFailed: true\r\n })\r\n },\r\n\r\n // 检查所有自有广告是否都达到上限\r\n isAllCustomAdsReachedLimit() {\r\n const ads = this.data.ads\r\n if (!ads || ads.length <= 1) return true // 只有微信广告或没有广告\r\n\r\n const currentIndex = this.data.currentAdIndex\r\n const showCount = this.data.currentAdShowCount\r\n\r\n // 如果当前不是自有广告,返回false\r\n if (currentIndex === 0) return false\r\n\r\n // 找到最后一个有效的自有广告索引\r\n let lastValidAdIndex = -1\r\n for (let i = ads.length - 1; i >= 1; i--) {\r\n if (ads[i][this.properties.type] !== undefined) {\r\n lastValidAdIndex = i\r\n break\r\n }\r\n }\r\n\r\n // 如果没有有效的自有广告,返回true\r\n if (lastValidAdIndex === -1) return true\r\n\r\n // 如果当前索引已经是最后一个有效广告,且达到展示上限,返回true\r\n if (currentIndex === lastValidAdIndex) {\r\n const ad = ads[currentIndex]\r\n const maxShowCount = ad.showCount || 1\r\n return showCount >= maxShowCount\r\n }\r\n\r\n return false\r\n },\r\n\r\n loadNextAd() {\r\n const ads = this.data.ads\r\n if (!ads || ads.length === 0) return\r\n\r\n // 检查并重置每日数据\r\n this.checkAndResetDaily()\r\n\r\n let currentIndex = this.data.currentAdIndex\r\n let showCount = this.data.currentAdShowCount\r\n\r\n // 如果是微信广告(索引0)且未失败,直接加载微信广告\r\n if (currentIndex === 0 && !this.isWxAdFailed()) {\r\n const wxAd = ads[0]\r\n if (wxAd && wxAd[this.properties.type] !== undefined) {\r\n this.setData({currentAd: wxAd})\r\n return\r\n } else {\r\n // 微信广告没有配置,标记为失败,切换到自有广告\r\n this.markWxAdFailed()\r\n currentIndex = 1\r\n showCount = 0\r\n }\r\n }\r\n\r\n // 如果微信广告失败,从自有广告开始\r\n if (currentIndex === 0 && this.isWxAdFailed()) {\r\n // 从存储中恢复自有广告的状态\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n currentIndex = wx.getStorageSync(customAdIndexKey) || 1\r\n showCount = wx.getStorageSync(customAdShowCountKey) || 0\r\n }\r\n\r\n // 如果没有自有广告,不展示任何广告\r\n if (ads.length <= 1) {\r\n return\r\n }\r\n\r\n // 检查所有自有广告是否都达到上限\r\n if (this.isAllCustomAdsReachedLimit()) {\r\n return\r\n }\r\n\r\n // 处理自有广告的展示次数限制\r\n let ad = ads[currentIndex]\r\n const maxShowCount = ad.showCount || 1\r\n\r\n // 如果当前自有广告达到展示上限,切换到下一个\r\n if (showCount >= maxShowCount) {\r\n currentIndex = currentIndex + 1\r\n showCount = 0\r\n\r\n // 如果超出广告列表范围,说明所有广告都达到上限\r\n if (currentIndex >= ads.length) {\r\n return\r\n }\r\n\r\n ad = ads[currentIndex]\r\n }\r\n\r\n // 检查当前广告是否有配置\r\n if (ad[this.properties.type] === undefined) {\r\n // 没有配置,跳过并尝试下一个\r\n this.setData({\r\n currentAdIndex: currentIndex + 1,\r\n currentAdShowCount: 0\r\n })\r\n this.saveAdState()\r\n this.loadNextAd()\r\n return\r\n }\r\n\r\n // 设置当前广告\r\n this.setData({\r\n currentAd: ad,\r\n currentAdIndex: currentIndex,\r\n currentAdShowCount: showCount\r\n })\r\n this.saveAdState()\r\n },\r\n\r\n report(actionType) {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const source = this.data.currentAd.source\r\n const adId = this.data.currentAd.id\r\n const time = new Date().getTime()\r\n wx.request({\r\n url: `https://wxgo.adwke.com/api/miniapp/report?slotId=${slotId}&type=${type}&source=${source}&actionType=${actionType}&adId=${adId}&time=${time}`,\r\n method: 'GET',\r\n success() {},\r\n fail() {}\r\n })\r\n },\r\n\r\n adLoad(e) {\r\n if (e === 'undefined') {\r\n this.triggerEvent('adClose', {msg: '广告加载成功'})\r\n } else {\r\n this.triggerEvent('adLoad', e.detail || {})\r\n }\r\n this.report('load')\r\n\r\n // 只有自有广告(索引>0)才增加展示计数\r\n if (this.data.currentAdIndex > 0) {\r\n const showCount = this.data.currentAdShowCount\r\n this.setData({\r\n currentAdShowCount: showCount + 1\r\n })\r\n this.saveAdState()\r\n }\r\n },\r\n\r\n adError(e) {\r\n // 如果是微信广告(索引0)失败,标记为失败状态\r\n if (this.data.currentAdIndex === 0) {\r\n this.markWxAdFailed()\r\n }\r\n\r\n if (e === 'undefined') {\r\n this.triggerEvent('adError', {msg: 'ad adError'})\r\n } else {\r\n this.triggerEvent('adError', e)\r\n }\r\n },\r\n\r\n adOpenMiniProgram() {\r\n const ad = this.data.currentAd\r\n const appId = ad[this.properties.type].appid || ''\r\n const path = ad[this.properties.type].path || ''\r\n if (appId) {\r\n wx.navigateToMiniProgram({\r\n appId: appId,\r\n path: path,\r\n success: () => {\r\n this.triggerEvent('adOpenMiniProgram', {appId, path})\r\n },\r\n fail: (err) => {\r\n console.error('跳转小程序失败', err)\r\n }\r\n })\r\n }\r\n this.report('click')\r\n },\r\n\r\n async initAds() {\r\n const slotId = this.properties.slotId\r\n const ads = await getAds(slotId)\r\n this.setData({ads})\r\n\r\n // 每次初始化时,总是从微信广告开始(索引0)\r\n this.setData({\r\n currentAdIndex: 0,\r\n currentAdShowCount: 0\r\n })\r\n\r\n this.loadNextAd()\r\n }\r\n}\r\n","const pendingRequests = {}\r\nconst requestCache = {}\r\n\r\nconst getAds = (slotId) => {\r\n if (requestCache[slotId]) {\r\n return Promise.resolve(requestCache[slotId])\r\n }\r\n\r\n if (pendingRequests[slotId]) {\r\n return pendingRequests[slotId]\r\n }\r\n\r\n const requestPromise = new Promise((resolve, reject) => {\r\n wx.request({\r\n url: `https://wxgo.adwke.com/api/miniapp/getads?slotId=${slotId}`,\r\n method: 'GET',\r\n success: (res) => {\r\n if (res.statusCode === 200 && res.data) {\r\n requestCache[slotId] = res.data.data\r\n resolve(res.data.data)\r\n } else {\r\n reject(new Error(`请求失败: ${res.statusCode} - ${res.errMsg}`))\r\n }\r\n },\r\n fail: (err) => {\r\n reject(err)\r\n },\r\n complete: () => {\r\n delete pendingRequests[slotId]\r\n }\r\n })\r\n })\r\n\r\n pendingRequests[slotId] = requestPromise\r\n return requestPromise\r\n}\r\n\r\nmodule.exports = {\r\n getAds\r\n}\r\n","const adBase = require('../mixins/ad-base.js')\n\nComponent({\n properties: {\n slotId: String,\n type: {\n type: String,\n value: 'h5'\n }\n },\n data: {\n ads: [],\n currentAd: {},\n currentAdIndex: 0,\n currentAdShowCount: 0,\n wxAdFailed: false\n },\n lifetimes: {\n async attached() {\n setTimeout(async () => {\n await adBase.initAds.call(this)\n }, 100)\n }\n },\n methods: {\n checkAndResetDaily() {\n return adBase.checkAndResetDaily.call(this)\n },\n isWxAdFailed() {\n return adBase.isWxAdFailed.call(this)\n },\n markWxAdFailed() {\n adBase.markWxAdFailed.call(this)\n },\n isAllCustomAdsReachedLimit() {\n return adBase.isAllCustomAdsReachedLimit.call(this)\n },\n restoreAdState() {\n adBase.restoreAdState.call(this)\n },\n saveAdState() {\n adBase.saveAdState.call(this)\n },\n loadNextAd() {\n adBase.loadNextAd.call(this)\n },\n report(actionType) {\n adBase.report.call(this, actionType)\n },\n adLoad(e) {\n adBase.adLoad.call(this, e)\n },\n adError(e) {\n adBase.adError.call(this, e)\n },\n adOpenMiniProgram() {\n adBase.adOpenMiniProgram.call(this)\n },\n\n handleMessage(e) {\n const message = e.detail.data[0]\n if (message === 'close') {\n this.adFinished({ detail: { msg: 'H5广告结束' } })\n }\n },\n\n adFinished(e) {\n this.triggerEvent('adFinished', e.detail || { msg: 'ad finished' })\n }\n }\n})\n"],"sourceRoot":""}
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "usingComponents": {}
4
+ }
@@ -0,0 +1,3 @@
1
+ <view class="webview-container">
2
+ <web-view src="{{currentAd.h5.url}}" bindload="adLoad" binderror="adError" bindmessage="handleMessage"></web-view>
3
+ </view>
@@ -0,0 +1,5 @@
1
+ .webview-container {
2
+ width: 100vw;
3
+ height: 100vh;
4
+ position: relative;
5
+ }
@@ -464,10 +464,6 @@ Component({
464
464
 
465
465
  canUse = this.canUseCoverAdAPI();
466
466
 
467
- if (!canUse) {
468
- _context3.next = 6;
469
- break;
470
- }
471
467
 
472
468
  setTimeout(function () {
473
469
  wx.getShowSplashAdStatus({
@@ -477,7 +473,7 @@ Component({
477
473
  while (1) {
478
474
  switch (_context.prev = _context.next) {
479
475
  case 0:
480
- if (!(res.status === 'fail')) {
476
+ if (!(res.status === 'fail' || res.status === 'unknown')) {
481
477
  _context.next = 6;
482
478
  break;
483
479
  }
@@ -535,17 +531,8 @@ Component({
535
531
  }()
536
532
  });
537
533
  }, 100);
538
- _context3.next = 9;
539
- break;
540
534
 
541
- case 6:
542
- _context3.next = 8;
543
- return adBase.initAds.call(this);
544
-
545
- case 8:
546
- this.startCountDown();
547
-
548
- case 9:
535
+ case 3:
549
536
  case 'end':
550
537
  return _context3.stop();
551
538
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/mixins/ad-base.js","webpack:///./src/request.js","webpack:///./src/ad-splash/index.js"],"names":["require","getAds","module","exports","checkAndResetDaily","slotId","properties","type","dateKey","today","Date","toDateString","savedDate","wx","getStorageSync","customAdIndexKey","customAdShowCountKey","setStorageSync","restoreAdState","saveAdState","data","currentAdIndex","currentAdShowCount","isWxAdFailed","wxAdFailed","markWxAdFailed","setData","isAllCustomAdsReachedLimit","ads","length","currentIndex","showCount","lastValidAdIndex","i","undefined","ad","maxShowCount","loadNextAd","wxAd","currentAd","report","actionType","source","adId","id","time","getTime","request","url","method","success","fail","adLoad","e","triggerEvent","msg","detail","adError","adOpenMiniProgram","appId","appid","path","navigateToMiniProgram","err","console","error","initAds","pendingRequests","requestCache","Promise","resolve","requestPromise","reject","res","statusCode","Error","errMsg","complete","adBase","Component","String","value","countDown","splashStatus","adBannerTop","lifetimes","attached","calculateAdBannerTop","canUse","canUseCoverAdAPI","setTimeout","getShowSplashAdStatus","status","call","startCountDown","jump","methods","interval","setInterval","menuRect","getMenuButtonBoundingClientRect","systemInfo","getSystemInfoSync","isCustomNavBar","screenHeight","windowHeight","top","bottom","statusBarHeight","topInRpx","windowWidth","compareVersion","v1","v2","s1","split","map","Number","s2","len","Math","max","n1","n2","REQUIRED_VERSION","sdkVersion","SDKVersion","clearInterval","adFinished","adClose"],"mappings":"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","file":"ad-splash\\index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","const {getAds} = require('../request.js')\r\n\r\nmodule.exports = {\r\n // 检查并重置每日数据\r\n checkAndResetDaily() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const dateKey = `adDate_${slotId}_${type}`\r\n\r\n const today = new Date().toDateString()\r\n const savedDate = wx.getStorageSync(dateKey)\r\n\r\n // 如果日期不同,重置所有数据\r\n if (savedDate !== today) {\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n wx.setStorageSync(dateKey, today)\r\n wx.setStorageSync(customAdIndexKey, 1) // 自有广告从索引1开始\r\n wx.setStorageSync(customAdShowCountKey, 0)\r\n\r\n return true // 表示已重置\r\n }\r\n\r\n return false // 表示未重置\r\n },\r\n\r\n restoreAdState() {\r\n // 检查并重置每日数据\r\n this.checkAndResetDaily()\r\n },\r\n\r\n saveAdState() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n // 只保存自有广告的状态(索引>0)\r\n if (this.data.currentAdIndex > 0) {\r\n wx.setStorageSync(customAdIndexKey, this.data.currentAdIndex)\r\n wx.setStorageSync(customAdShowCountKey, this.data.currentAdShowCount)\r\n }\r\n },\r\n\r\n // 检查微信广告是否失败(只在内存中,不持久化)\r\n isWxAdFailed() {\r\n return this.data.wxAdFailed || false\r\n },\r\n\r\n // 标记微信广告失败(只在内存中,不持久化)\r\n markWxAdFailed() {\r\n this.setData({\r\n wxAdFailed: true\r\n })\r\n },\r\n\r\n // 检查所有自有广告是否都达到上限\r\n isAllCustomAdsReachedLimit() {\r\n const ads = this.data.ads\r\n if (!ads || ads.length <= 1) return true // 只有微信广告或没有广告\r\n\r\n const currentIndex = this.data.currentAdIndex\r\n const showCount = this.data.currentAdShowCount\r\n\r\n // 如果当前不是自有广告,返回false\r\n if (currentIndex === 0) return false\r\n\r\n // 找到最后一个有效的自有广告索引\r\n let lastValidAdIndex = -1\r\n for (let i = ads.length - 1; i >= 1; i--) {\r\n if (ads[i][this.properties.type] !== undefined) {\r\n lastValidAdIndex = i\r\n break\r\n }\r\n }\r\n\r\n // 如果没有有效的自有广告,返回true\r\n if (lastValidAdIndex === -1) return true\r\n\r\n // 如果当前索引已经是最后一个有效广告,且达到展示上限,返回true\r\n if (currentIndex === lastValidAdIndex) {\r\n const ad = ads[currentIndex]\r\n const maxShowCount = ad.showCount || 1\r\n return showCount >= maxShowCount\r\n }\r\n\r\n return false\r\n },\r\n\r\n loadNextAd() {\r\n const ads = this.data.ads\r\n if (!ads || ads.length === 0) return\r\n\r\n // 检查并重置每日数据\r\n this.checkAndResetDaily()\r\n\r\n let currentIndex = this.data.currentAdIndex\r\n let showCount = this.data.currentAdShowCount\r\n\r\n // 如果是微信广告(索引0)且未失败,直接加载微信广告\r\n if (currentIndex === 0 && !this.isWxAdFailed()) {\r\n const wxAd = ads[0]\r\n if (wxAd && wxAd[this.properties.type] !== undefined) {\r\n this.setData({currentAd: wxAd})\r\n return\r\n } else {\r\n // 微信广告没有配置,标记为失败,切换到自有广告\r\n this.markWxAdFailed()\r\n currentIndex = 1\r\n showCount = 0\r\n }\r\n }\r\n\r\n // 如果微信广告失败,从自有广告开始\r\n if (currentIndex === 0 && this.isWxAdFailed()) {\r\n // 从存储中恢复自有广告的状态\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n currentIndex = wx.getStorageSync(customAdIndexKey) || 1\r\n showCount = wx.getStorageSync(customAdShowCountKey) || 0\r\n }\r\n\r\n // 如果没有自有广告,不展示任何广告\r\n if (ads.length <= 1) {\r\n return\r\n }\r\n\r\n // 检查所有自有广告是否都达到上限\r\n if (this.isAllCustomAdsReachedLimit()) {\r\n return\r\n }\r\n\r\n // 处理自有广告的展示次数限制\r\n let ad = ads[currentIndex]\r\n const maxShowCount = ad.showCount || 1\r\n\r\n // 如果当前自有广告达到展示上限,切换到下一个\r\n if (showCount >= maxShowCount) {\r\n currentIndex = currentIndex + 1\r\n showCount = 0\r\n\r\n // 如果超出广告列表范围,说明所有广告都达到上限\r\n if (currentIndex >= ads.length) {\r\n return\r\n }\r\n\r\n ad = ads[currentIndex]\r\n }\r\n\r\n // 检查当前广告是否有配置\r\n if (ad[this.properties.type] === undefined) {\r\n // 没有配置,跳过并尝试下一个\r\n this.setData({\r\n currentAdIndex: currentIndex + 1,\r\n currentAdShowCount: 0\r\n })\r\n this.saveAdState()\r\n this.loadNextAd()\r\n return\r\n }\r\n\r\n // 设置当前广告\r\n this.setData({\r\n currentAd: ad,\r\n currentAdIndex: currentIndex,\r\n currentAdShowCount: showCount\r\n })\r\n this.saveAdState()\r\n },\r\n\r\n report(actionType) {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const source = this.data.currentAd.source\r\n const adId = this.data.currentAd.id\r\n const time = new Date().getTime()\r\n wx.request({\r\n url: `https://wxgo.adwke.com/api/miniapp/report?slotId=${slotId}&type=${type}&source=${source}&actionType=${actionType}&adId=${adId}&time=${time}`,\r\n method: 'GET',\r\n success() {},\r\n fail() {}\r\n })\r\n },\r\n\r\n adLoad(e) {\r\n if (e === 'undefined') {\r\n this.triggerEvent('adClose', {msg: '广告加载成功'})\r\n } else {\r\n this.triggerEvent('adLoad', e.detail || {})\r\n }\r\n this.report('load')\r\n\r\n // 只有自有广告(索引>0)才增加展示计数\r\n if (this.data.currentAdIndex > 0) {\r\n const showCount = this.data.currentAdShowCount\r\n this.setData({\r\n currentAdShowCount: showCount + 1\r\n })\r\n this.saveAdState()\r\n }\r\n },\r\n\r\n adError(e) {\r\n // 如果是微信广告(索引0)失败,标记为失败状态\r\n if (this.data.currentAdIndex === 0) {\r\n this.markWxAdFailed()\r\n }\r\n\r\n if (e === 'undefined') {\r\n this.triggerEvent('adError', {msg: 'ad adError'})\r\n } else {\r\n this.triggerEvent('adError', e)\r\n }\r\n },\r\n\r\n adOpenMiniProgram() {\r\n const ad = this.data.currentAd\r\n const appId = ad[this.properties.type].appid || ''\r\n const path = ad[this.properties.type].path || ''\r\n if (appId) {\r\n wx.navigateToMiniProgram({\r\n appId: appId,\r\n path: path,\r\n success: () => {\r\n this.triggerEvent('adOpenMiniProgram', {appId, path})\r\n },\r\n fail: (err) => {\r\n console.error('跳转小程序失败', err)\r\n }\r\n })\r\n }\r\n this.report('click')\r\n },\r\n\r\n async initAds() {\r\n const slotId = this.properties.slotId\r\n const ads = await getAds(slotId)\r\n this.setData({ads})\r\n\r\n // 每次初始化时,总是从微信广告开始(索引0)\r\n this.setData({\r\n currentAdIndex: 0,\r\n currentAdShowCount: 0\r\n })\r\n\r\n this.loadNextAd()\r\n }\r\n}\r\n","const pendingRequests = {}\r\nconst requestCache = {}\r\n\r\nconst getAds = (slotId) => {\r\n if (requestCache[slotId]) {\r\n return Promise.resolve(requestCache[slotId])\r\n }\r\n\r\n if (pendingRequests[slotId]) {\r\n return pendingRequests[slotId]\r\n }\r\n\r\n const requestPromise = new Promise((resolve, reject) => {\r\n wx.request({\r\n url: `https://wxgo.adwke.com/api/miniapp/getads?slotId=${slotId}`,\r\n method: 'GET',\r\n success: (res) => {\r\n if (res.statusCode === 200 && res.data) {\r\n requestCache[slotId] = res.data.data\r\n resolve(res.data.data)\r\n } else {\r\n reject(new Error(`请求失败: ${res.statusCode} - ${res.errMsg}`))\r\n }\r\n },\r\n fail: (err) => {\r\n reject(err)\r\n },\r\n complete: () => {\r\n delete pendingRequests[slotId]\r\n }\r\n })\r\n })\r\n\r\n pendingRequests[slotId] = requestPromise\r\n return requestPromise\r\n}\r\n\r\nmodule.exports = {\r\n getAds\r\n}\r\n","const adBase = require('../mixins/ad-base.js')\r\n\r\nComponent({\r\n properties: {\r\n slotId: String,\r\n type: {\r\n type: String,\r\n value: 'splash'\r\n }\r\n },\r\n data: {\r\n ads: [],\r\n currentAd: {},\r\n currentAdIndex: 0,\r\n currentAdShowCount: 0,\r\n countDown: 5,\r\n splashStatus: true,\r\n adBannerTop: 60,\r\n wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)\r\n },\r\n lifetimes: {\r\n async attached() {\r\n this.calculateAdBannerTop()\r\n\r\n const canUse = this.canUseCoverAdAPI()\r\n\r\n if (canUse){\r\n setTimeout(() => {\r\n wx.getShowSplashAdStatus({\r\n success: async res => {\r\n if (res.status === 'fail'){\r\n await adBase.initAds.call(this)\r\n this.startCountDown()\r\n } else {\r\n this.jump()\r\n }\r\n },\r\n fail: async err => {\r\n await adBase.initAds.call(this)\r\n this.startCountDown()\r\n }\r\n })\r\n }, 100)\r\n } else {\r\n await adBase.initAds.call(this)\r\n this.startCountDown()\r\n }\r\n }\r\n },\r\n methods: {\r\n checkAndResetDaily() {\r\n return adBase.checkAndResetDaily.call(this)\r\n },\r\n isWxAdFailed() {\r\n return adBase.isWxAdFailed.call(this)\r\n },\r\n markWxAdFailed() {\r\n adBase.markWxAdFailed.call(this)\r\n },\r\n isAllCustomAdsReachedLimit() {\r\n return adBase.isAllCustomAdsReachedLimit.call(this)\r\n },\r\n restoreAdState() {\r\n adBase.restoreAdState.call(this)\r\n },\r\n saveAdState() {\r\n adBase.saveAdState.call(this)\r\n },\r\n loadNextAd() {\r\n adBase.loadNextAd.call(this)\r\n },\r\n report(actionType) {\r\n adBase.report.call(this, actionType)\r\n },\r\n adLoad(e) {\r\n adBase.adLoad.call(this, e)\r\n },\r\n adError(e) {\r\n adBase.adError.call(this, e)\r\n },\r\n adOpenMiniProgram() {\r\n adBase.adOpenMiniProgram.call(this)\r\n },\r\n startCountDown() {\r\n this.interval = setInterval(() => {\r\n this.setData({\r\n countDown: this.data.countDown - 1\r\n })\r\n if (this.data.countDown === 0) {\r\n this.jump()\r\n }\r\n }, 1100)\r\n },\r\n\r\n calculateAdBannerTop() {\r\n try {\r\n const menuRect = wx.getMenuButtonBoundingClientRect();\r\n const systemInfo = wx.getSystemInfoSync();\r\n\r\n const isCustomNavBar = (systemInfo.screenHeight === systemInfo.windowHeight);\r\n\r\n let top\r\n if (isCustomNavBar) {\r\n top = menuRect.bottom + 10\r\n } else {\r\n top = systemInfo.statusBarHeight + 20\r\n }\r\n\r\n const topInRpx = top * 750 / systemInfo.windowWidth\r\n\r\n this.setData({\r\n adBannerTop: topInRpx\r\n })\r\n } catch (err) {\r\n }\r\n },\r\n\r\n compareVersion(v1, v2) {\r\n const s1 = v1.split('.').map(Number);\r\n const s2 = v2.split('.').map(Number);\r\n const len = Math.max(s1.length, s2.length);\r\n\r\n for (let i = 0; i < len; i++) {\r\n const n1 = s1[i] || 0;\r\n const n2 = s2[i] || 0;\r\n if (n1 > n2) return 1;\r\n if (n1 < n2) return -1;\r\n }\r\n return 0;\r\n },\r\n canUseCoverAdAPI() {\r\n const REQUIRED_VERSION = '3.7.8';\r\n const systemInfo = wx.getSystemInfoSync();\r\n const sdkVersion = systemInfo.SDKVersion;\r\n return this.compareVersion(sdkVersion, REQUIRED_VERSION) >= 0;\r\n },\r\n\r\n jump() {\r\n this.setData({\r\n splashStatus: false\r\n })\r\n clearInterval(this.interval)\r\n this.adFinished({detail: {msg: '开屏广告结束'}})\r\n },\r\n\r\n adFinished(e) {\r\n this.triggerEvent('adFinished', e.detail || {msg: 'ad finished'})\r\n },\r\n\r\n adClose(e) {\r\n this.triggerEvent('adClose', e || {msg: 'ad close'})\r\n }\r\n }\r\n})\r\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/mixins/ad-base.js","webpack:///./src/request.js","webpack:///./src/ad-splash/index.js"],"names":["require","getAds","module","exports","checkAndResetDaily","slotId","properties","type","dateKey","today","Date","toDateString","savedDate","wx","getStorageSync","customAdIndexKey","customAdShowCountKey","setStorageSync","restoreAdState","saveAdState","data","currentAdIndex","currentAdShowCount","isWxAdFailed","wxAdFailed","markWxAdFailed","setData","isAllCustomAdsReachedLimit","ads","length","currentIndex","showCount","lastValidAdIndex","i","undefined","ad","maxShowCount","loadNextAd","wxAd","currentAd","report","actionType","source","adId","id","time","getTime","request","url","method","success","fail","adLoad","e","triggerEvent","msg","detail","adError","adOpenMiniProgram","appId","appid","path","navigateToMiniProgram","err","console","error","initAds","pendingRequests","requestCache","Promise","resolve","requestPromise","reject","res","statusCode","Error","errMsg","complete","adBase","Component","String","value","countDown","splashStatus","adBannerTop","lifetimes","attached","calculateAdBannerTop","canUse","canUseCoverAdAPI","setTimeout","getShowSplashAdStatus","status","call","startCountDown","jump","methods","interval","setInterval","menuRect","getMenuButtonBoundingClientRect","systemInfo","getSystemInfoSync","isCustomNavBar","screenHeight","windowHeight","top","bottom","statusBarHeight","topInRpx","windowWidth","compareVersion","v1","v2","s1","split","map","Number","s2","len","Math","max","n1","n2","REQUIRED_VERSION","sdkVersion","SDKVersion","clearInterval","adFinished","adClose"],"mappings":"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","file":"ad-splash\\index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","const {getAds} = require('../request.js')\r\n\r\nmodule.exports = {\r\n // 检查并重置每日数据\r\n checkAndResetDaily() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const dateKey = `adDate_${slotId}_${type}`\r\n\r\n const today = new Date().toDateString()\r\n const savedDate = wx.getStorageSync(dateKey)\r\n\r\n // 如果日期不同,重置所有数据\r\n if (savedDate !== today) {\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n wx.setStorageSync(dateKey, today)\r\n wx.setStorageSync(customAdIndexKey, 1) // 自有广告从索引1开始\r\n wx.setStorageSync(customAdShowCountKey, 0)\r\n\r\n return true // 表示已重置\r\n }\r\n\r\n return false // 表示未重置\r\n },\r\n\r\n restoreAdState() {\r\n // 检查并重置每日数据\r\n this.checkAndResetDaily()\r\n },\r\n\r\n saveAdState() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n // 只保存自有广告的状态(索引>0)\r\n if (this.data.currentAdIndex > 0) {\r\n wx.setStorageSync(customAdIndexKey, this.data.currentAdIndex)\r\n wx.setStorageSync(customAdShowCountKey, this.data.currentAdShowCount)\r\n }\r\n },\r\n\r\n // 检查微信广告是否失败(只在内存中,不持久化)\r\n isWxAdFailed() {\r\n return this.data.wxAdFailed || false\r\n },\r\n\r\n // 标记微信广告失败(只在内存中,不持久化)\r\n markWxAdFailed() {\r\n this.setData({\r\n wxAdFailed: true\r\n })\r\n },\r\n\r\n // 检查所有自有广告是否都达到上限\r\n isAllCustomAdsReachedLimit() {\r\n const ads = this.data.ads\r\n if (!ads || ads.length <= 1) return true // 只有微信广告或没有广告\r\n\r\n const currentIndex = this.data.currentAdIndex\r\n const showCount = this.data.currentAdShowCount\r\n\r\n // 如果当前不是自有广告,返回false\r\n if (currentIndex === 0) return false\r\n\r\n // 找到最后一个有效的自有广告索引\r\n let lastValidAdIndex = -1\r\n for (let i = ads.length - 1; i >= 1; i--) {\r\n if (ads[i][this.properties.type] !== undefined) {\r\n lastValidAdIndex = i\r\n break\r\n }\r\n }\r\n\r\n // 如果没有有效的自有广告,返回true\r\n if (lastValidAdIndex === -1) return true\r\n\r\n // 如果当前索引已经是最后一个有效广告,且达到展示上限,返回true\r\n if (currentIndex === lastValidAdIndex) {\r\n const ad = ads[currentIndex]\r\n const maxShowCount = ad.showCount || 1\r\n return showCount >= maxShowCount\r\n }\r\n\r\n return false\r\n },\r\n\r\n loadNextAd() {\r\n const ads = this.data.ads\r\n if (!ads || ads.length === 0) return\r\n\r\n // 检查并重置每日数据\r\n this.checkAndResetDaily()\r\n\r\n let currentIndex = this.data.currentAdIndex\r\n let showCount = this.data.currentAdShowCount\r\n\r\n // 如果是微信广告(索引0)且未失败,直接加载微信广告\r\n if (currentIndex === 0 && !this.isWxAdFailed()) {\r\n const wxAd = ads[0]\r\n if (wxAd && wxAd[this.properties.type] !== undefined) {\r\n this.setData({currentAd: wxAd})\r\n return\r\n } else {\r\n // 微信广告没有配置,标记为失败,切换到自有广告\r\n this.markWxAdFailed()\r\n currentIndex = 1\r\n showCount = 0\r\n }\r\n }\r\n\r\n // 如果微信广告失败,从自有广告开始\r\n if (currentIndex === 0 && this.isWxAdFailed()) {\r\n // 从存储中恢复自有广告的状态\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const customAdIndexKey = `customAdIndex_${slotId}_${type}`\r\n const customAdShowCountKey = `customAdShowCount_${slotId}_${type}`\r\n\r\n currentIndex = wx.getStorageSync(customAdIndexKey) || 1\r\n showCount = wx.getStorageSync(customAdShowCountKey) || 0\r\n }\r\n\r\n // 如果没有自有广告,不展示任何广告\r\n if (ads.length <= 1) {\r\n return\r\n }\r\n\r\n // 检查所有自有广告是否都达到上限\r\n if (this.isAllCustomAdsReachedLimit()) {\r\n return\r\n }\r\n\r\n // 处理自有广告的展示次数限制\r\n let ad = ads[currentIndex]\r\n const maxShowCount = ad.showCount || 1\r\n\r\n // 如果当前自有广告达到展示上限,切换到下一个\r\n if (showCount >= maxShowCount) {\r\n currentIndex = currentIndex + 1\r\n showCount = 0\r\n\r\n // 如果超出广告列表范围,说明所有广告都达到上限\r\n if (currentIndex >= ads.length) {\r\n return\r\n }\r\n\r\n ad = ads[currentIndex]\r\n }\r\n\r\n // 检查当前广告是否有配置\r\n if (ad[this.properties.type] === undefined) {\r\n // 没有配置,跳过并尝试下一个\r\n this.setData({\r\n currentAdIndex: currentIndex + 1,\r\n currentAdShowCount: 0\r\n })\r\n this.saveAdState()\r\n this.loadNextAd()\r\n return\r\n }\r\n\r\n // 设置当前广告\r\n this.setData({\r\n currentAd: ad,\r\n currentAdIndex: currentIndex,\r\n currentAdShowCount: showCount\r\n })\r\n this.saveAdState()\r\n },\r\n\r\n report(actionType) {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const source = this.data.currentAd.source\r\n const adId = this.data.currentAd.id\r\n const time = new Date().getTime()\r\n wx.request({\r\n url: `https://wxgo.adwke.com/api/miniapp/report?slotId=${slotId}&type=${type}&source=${source}&actionType=${actionType}&adId=${adId}&time=${time}`,\r\n method: 'GET',\r\n success() {},\r\n fail() {}\r\n })\r\n },\r\n\r\n adLoad(e) {\r\n if (e === 'undefined') {\r\n this.triggerEvent('adClose', {msg: '广告加载成功'})\r\n } else {\r\n this.triggerEvent('adLoad', e.detail || {})\r\n }\r\n this.report('load')\r\n\r\n // 只有自有广告(索引>0)才增加展示计数\r\n if (this.data.currentAdIndex > 0) {\r\n const showCount = this.data.currentAdShowCount\r\n this.setData({\r\n currentAdShowCount: showCount + 1\r\n })\r\n this.saveAdState()\r\n }\r\n },\r\n\r\n adError(e) {\r\n // 如果是微信广告(索引0)失败,标记为失败状态\r\n if (this.data.currentAdIndex === 0) {\r\n this.markWxAdFailed()\r\n }\r\n\r\n if (e === 'undefined') {\r\n this.triggerEvent('adError', {msg: 'ad adError'})\r\n } else {\r\n this.triggerEvent('adError', e)\r\n }\r\n },\r\n\r\n adOpenMiniProgram() {\r\n const ad = this.data.currentAd\r\n const appId = ad[this.properties.type].appid || ''\r\n const path = ad[this.properties.type].path || ''\r\n if (appId) {\r\n wx.navigateToMiniProgram({\r\n appId: appId,\r\n path: path,\r\n success: () => {\r\n this.triggerEvent('adOpenMiniProgram', {appId, path})\r\n },\r\n fail: (err) => {\r\n console.error('跳转小程序失败', err)\r\n }\r\n })\r\n }\r\n this.report('click')\r\n },\r\n\r\n async initAds() {\r\n const slotId = this.properties.slotId\r\n const ads = await getAds(slotId)\r\n this.setData({ads})\r\n\r\n // 每次初始化时,总是从微信广告开始(索引0)\r\n this.setData({\r\n currentAdIndex: 0,\r\n currentAdShowCount: 0\r\n })\r\n\r\n this.loadNextAd()\r\n }\r\n}\r\n","const pendingRequests = {}\r\nconst requestCache = {}\r\n\r\nconst getAds = (slotId) => {\r\n if (requestCache[slotId]) {\r\n return Promise.resolve(requestCache[slotId])\r\n }\r\n\r\n if (pendingRequests[slotId]) {\r\n return pendingRequests[slotId]\r\n }\r\n\r\n const requestPromise = new Promise((resolve, reject) => {\r\n wx.request({\r\n url: `https://wxgo.adwke.com/api/miniapp/getads?slotId=${slotId}`,\r\n method: 'GET',\r\n success: (res) => {\r\n if (res.statusCode === 200 && res.data) {\r\n requestCache[slotId] = res.data.data\r\n resolve(res.data.data)\r\n } else {\r\n reject(new Error(`请求失败: ${res.statusCode} - ${res.errMsg}`))\r\n }\r\n },\r\n fail: (err) => {\r\n reject(err)\r\n },\r\n complete: () => {\r\n delete pendingRequests[slotId]\r\n }\r\n })\r\n })\r\n\r\n pendingRequests[slotId] = requestPromise\r\n return requestPromise\r\n}\r\n\r\nmodule.exports = {\r\n getAds\r\n}\r\n","const adBase = require('../mixins/ad-base.js')\r\n\r\nComponent({\r\n properties: {\r\n slotId: String,\r\n type: {\r\n type: String,\r\n value: 'splash'\r\n }\r\n },\r\n data: {\r\n ads: [],\r\n currentAd: {},\r\n currentAdIndex: 0,\r\n currentAdShowCount: 0,\r\n countDown: 5,\r\n splashStatus: true,\r\n adBannerTop: 60,\r\n wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)\r\n },\r\n lifetimes: {\r\n async attached() {\r\n this.calculateAdBannerTop()\r\n\r\n const canUse = this.canUseCoverAdAPI()\r\n\r\n\r\n setTimeout(() => {\r\n wx.getShowSplashAdStatus({\r\n success: async res => {\r\n if (res.status === 'fail' || res.status === 'unknown') {\r\n await adBase.initAds.call(this)\r\n this.startCountDown()\r\n } else {\r\n this.jump()\r\n }\r\n },\r\n fail: async err => {\r\n await adBase.initAds.call(this)\r\n this.startCountDown()\r\n }\r\n })\r\n\r\n }, 100)\r\n }\r\n },\r\n methods: {\r\n checkAndResetDaily() {\r\n return adBase.checkAndResetDaily.call(this)\r\n },\r\n isWxAdFailed() {\r\n return adBase.isWxAdFailed.call(this)\r\n },\r\n markWxAdFailed() {\r\n adBase.markWxAdFailed.call(this)\r\n },\r\n isAllCustomAdsReachedLimit() {\r\n return adBase.isAllCustomAdsReachedLimit.call(this)\r\n },\r\n restoreAdState() {\r\n adBase.restoreAdState.call(this)\r\n },\r\n saveAdState() {\r\n adBase.saveAdState.call(this)\r\n },\r\n loadNextAd() {\r\n adBase.loadNextAd.call(this)\r\n },\r\n report(actionType) {\r\n adBase.report.call(this, actionType)\r\n },\r\n adLoad(e) {\r\n adBase.adLoad.call(this, e)\r\n },\r\n adError(e) {\r\n adBase.adError.call(this, e)\r\n },\r\n adOpenMiniProgram() {\r\n adBase.adOpenMiniProgram.call(this)\r\n },\r\n startCountDown() {\r\n this.interval = setInterval(() => {\r\n this.setData({\r\n countDown: this.data.countDown - 1\r\n })\r\n if (this.data.countDown === 0) {\r\n this.jump()\r\n }\r\n }, 1100)\r\n },\r\n\r\n calculateAdBannerTop() {\r\n try {\r\n const menuRect = wx.getMenuButtonBoundingClientRect();\r\n const systemInfo = wx.getSystemInfoSync();\r\n\r\n const isCustomNavBar = (systemInfo.screenHeight === systemInfo.windowHeight);\r\n\r\n let top\r\n if (isCustomNavBar) {\r\n top = menuRect.bottom + 10\r\n } else {\r\n top = systemInfo.statusBarHeight + 20\r\n }\r\n\r\n const topInRpx = top * 750 / systemInfo.windowWidth\r\n\r\n this.setData({\r\n adBannerTop: topInRpx\r\n })\r\n } catch (err) {\r\n }\r\n },\r\n\r\n compareVersion(v1, v2) {\r\n const s1 = v1.split('.').map(Number);\r\n const s2 = v2.split('.').map(Number);\r\n const len = Math.max(s1.length, s2.length);\r\n\r\n for (let i = 0; i < len; i++) {\r\n const n1 = s1[i] || 0;\r\n const n2 = s2[i] || 0;\r\n if (n1 > n2) return 1;\r\n if (n1 < n2) return -1;\r\n }\r\n return 0;\r\n },\r\n canUseCoverAdAPI() {\r\n const REQUIRED_VERSION = '3.7.8';\r\n const systemInfo = wx.getSystemInfoSync();\r\n const sdkVersion = systemInfo.SDKVersion;\r\n return this.compareVersion(sdkVersion, REQUIRED_VERSION) >= 0;\r\n },\r\n\r\n jump() {\r\n this.setData({\r\n splashStatus: false\r\n })\r\n clearInterval(this.interval)\r\n this.adFinished({detail: {msg: '开屏广告结束'}})\r\n },\r\n\r\n adFinished(e) {\r\n this.triggerEvent('adFinished', e.detail || {msg: 'ad finished'})\r\n },\r\n\r\n adClose(e) {\r\n this.triggerEvent('adClose', e || {msg: 'ad close'})\r\n }\r\n }\r\n})\r\n"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jyj-components",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "微信小程序广告组件库",
5
5
  "main": "miniprogram_dist/index.js",
6
6
  "miniprogram": "miniprogram_dist",
@@ -0,0 +1,71 @@
1
+ const adBase = require('../mixins/ad-base.js')
2
+
3
+ Component({
4
+ properties: {
5
+ slotId: String,
6
+ type: {
7
+ type: String,
8
+ value: 'h5'
9
+ }
10
+ },
11
+ data: {
12
+ ads: [],
13
+ currentAd: {},
14
+ currentAdIndex: 0,
15
+ currentAdShowCount: 0,
16
+ wxAdFailed: false
17
+ },
18
+ lifetimes: {
19
+ async attached() {
20
+ setTimeout(async () => {
21
+ await adBase.initAds.call(this)
22
+ }, 100)
23
+ }
24
+ },
25
+ methods: {
26
+ checkAndResetDaily() {
27
+ return adBase.checkAndResetDaily.call(this)
28
+ },
29
+ isWxAdFailed() {
30
+ return adBase.isWxAdFailed.call(this)
31
+ },
32
+ markWxAdFailed() {
33
+ adBase.markWxAdFailed.call(this)
34
+ },
35
+ isAllCustomAdsReachedLimit() {
36
+ return adBase.isAllCustomAdsReachedLimit.call(this)
37
+ },
38
+ restoreAdState() {
39
+ adBase.restoreAdState.call(this)
40
+ },
41
+ saveAdState() {
42
+ adBase.saveAdState.call(this)
43
+ },
44
+ loadNextAd() {
45
+ adBase.loadNextAd.call(this)
46
+ },
47
+ report(actionType) {
48
+ adBase.report.call(this, actionType)
49
+ },
50
+ adLoad(e) {
51
+ adBase.adLoad.call(this, e)
52
+ },
53
+ adError(e) {
54
+ adBase.adError.call(this, e)
55
+ },
56
+ adOpenMiniProgram() {
57
+ adBase.adOpenMiniProgram.call(this)
58
+ },
59
+
60
+ handleMessage(e) {
61
+ const message = e.detail.data[0]
62
+ if (message === 'close') {
63
+ this.adFinished({ detail: { msg: 'H5广告结束' } })
64
+ }
65
+ },
66
+
67
+ adFinished(e) {
68
+ this.triggerEvent('adFinished', e.detail || { msg: 'ad finished' })
69
+ }
70
+ }
71
+ })
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "usingComponents": {}
4
+ }
@@ -0,0 +1,3 @@
1
+ <view class="webview-container">
2
+ <web-view src="{{currentAd.h5.url}}" bindload="adLoad" binderror="adError" bindmessage="handleMessage"></web-view>
3
+ </view>
@@ -0,0 +1,5 @@
1
+ .webview-container {
2
+ width: 100vw;
3
+ height: 100vh;
4
+ position: relative;
5
+ }
@@ -24,27 +24,24 @@ Component({
24
24
 
25
25
  const canUse = this.canUseCoverAdAPI()
26
26
 
27
- if (canUse){
28
- setTimeout(() => {
29
- wx.getShowSplashAdStatus({
30
- success: async res => {
31
- if (res.status === 'fail'){
32
- await adBase.initAds.call(this)
33
- this.startCountDown()
34
- } else {
35
- this.jump()
36
- }
37
- },
38
- fail: async err => {
27
+
28
+ setTimeout(() => {
29
+ wx.getShowSplashAdStatus({
30
+ success: async res => {
31
+ if (res.status === 'fail' || res.status === 'unknown') {
39
32
  await adBase.initAds.call(this)
40
33
  this.startCountDown()
34
+ } else {
35
+ this.jump()
41
36
  }
42
- })
43
- }, 100)
44
- } else {
45
- await adBase.initAds.call(this)
46
- this.startCountDown()
47
- }
37
+ },
38
+ fail: async err => {
39
+ await adBase.initAds.call(this)
40
+ this.startCountDown()
41
+ }
42
+ })
43
+
44
+ }, 100)
48
45
  }
49
46
  },
50
47
  methods: {