jyj-components 1.0.2 → 1.0.3

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.
@@ -98,53 +98,159 @@ var _require = __webpack_require__(1),
98
98
  getAds = _require.getAds;
99
99
 
100
100
  module.exports = {
101
- restoreAdState: function restoreAdState() {
101
+ // 检查并重置每日数据
102
+ checkAndResetDaily: function checkAndResetDaily() {
102
103
  var slotId = this.properties.slotId;
103
104
  var type = this.properties.type;
104
- var adIndexKey = 'adIndex_' + slotId + '_' + type;
105
- var adShowCountKey = 'adShowCount_' + slotId + '_' + type;
105
+ var dateKey = 'adDate_' + slotId + '_' + type;
106
106
 
107
- var savedIndex = wx.getStorageSync(adIndexKey) || 0;
108
- var savedShowCount = wx.getStorageSync(adShowCountKey) || 0;
107
+ var today = new Date().toDateString();
108
+ var savedDate = wx.getStorageSync(dateKey);
109
109
 
110
- this.setData({
111
- currentAdIndex: savedIndex,
112
- currentAdShowCount: savedShowCount
113
- });
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();
114
127
  },
115
128
  saveAdState: function saveAdState() {
116
129
  var slotId = this.properties.slotId;
117
130
  var type = this.properties.type;
118
- var adIndexKey = 'adIndex_' + slotId + '_' + type;
119
- var adShowCountKey = 'adShowCount_' + slotId + '_' + 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
+ },
120
146
 
121
- wx.setStorageSync(adIndexKey, this.data.currentAdIndex);
122
- wx.setStorageSync(adShowCountKey, this.data.currentAdShowCount);
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;
123
187
  },
124
188
  loadNextAd: function loadNextAd() {
125
189
  var ads = this.data.ads;
126
190
  if (!ads || ads.length === 0) return;
127
191
 
192
+ // 检查并重置每日数据
193
+ this.checkAndResetDaily();
194
+
128
195
  var currentIndex = this.data.currentAdIndex;
129
196
  var showCount = this.data.currentAdShowCount;
130
197
 
131
- var currentAd = ads[currentIndex % ads.length];
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;
132
237
 
133
- var maxShowCount = currentAd.showCount || 1;
238
+ // 如果当前自有广告达到展示上限,切换到下一个
134
239
  if (showCount >= maxShowCount) {
135
240
  currentIndex = currentIndex + 1;
136
241
  showCount = 0;
137
- this.setData({
138
- currentAdIndex: currentIndex,
139
- currentAdShowCount: showCount
140
- });
141
- this.saveAdState();
142
- }
143
242
 
144
- var ad = ads[currentIndex % ads.length];
145
- this.setData({ currentAd: ad });
243
+ // 如果超出广告列表范围,说明所有广告都达到上限
244
+ if (currentIndex >= ads.length) {
245
+ return;
246
+ }
146
247
 
248
+ ad = ads[currentIndex];
249
+ }
250
+
251
+ // 检查当前广告是否有配置
147
252
  if (ad[this.properties.type] === undefined) {
253
+ // 没有配置,跳过并尝试下一个
148
254
  this.setData({
149
255
  currentAdIndex: currentIndex + 1,
150
256
  currentAdShowCount: 0
@@ -154,8 +260,11 @@ module.exports = {
154
260
  return;
155
261
  }
156
262
 
263
+ // 设置当前广告
157
264
  this.setData({
158
- currentAdShowCount: showCount + 1
265
+ currentAd: ad,
266
+ currentAdIndex: currentIndex,
267
+ currentAdShowCount: showCount
159
268
  });
160
269
  this.saveAdState();
161
270
  },
@@ -179,8 +288,22 @@ module.exports = {
179
288
  this.triggerEvent('adLoad', e.detail || {});
180
289
  }
181
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
+ }
182
300
  },
183
301
  adError: function adError(e) {
302
+ // 如果是微信广告(索引0)失败,标记为失败状态
303
+ if (this.data.currentAdIndex === 0) {
304
+ this.markWxAdFailed();
305
+ }
306
+
184
307
  if (e === 'undefined') {
185
308
  this.triggerEvent('adError', { msg: 'ad adError' });
186
309
  } else {
@@ -222,7 +345,13 @@ module.exports = {
222
345
  ads = _context.sent;
223
346
 
224
347
  this.setData({ ads: ads });
225
- this.restoreAdState();
348
+
349
+ // 每次初始化时,总是从微信广告开始(索引0)
350
+ this.setData({
351
+ currentAdIndex: 0,
352
+ currentAdShowCount: 0
353
+ });
354
+
226
355
  this.loadNextAd();
227
356
 
228
357
  case 7:
@@ -317,27 +446,111 @@ Component({
317
446
  currentAdIndex: 0,
318
447
  currentAdShowCount: 0,
319
448
  countDown: 5,
320
- splashStatus: true
449
+ splashStatus: true,
450
+ adBannerTop: 60,
451
+ wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)
321
452
  },
322
453
  lifetimes: {
323
454
  attached: function () {
324
- var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
325
- return regeneratorRuntime.wrap(function _callee$(_context) {
455
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
456
+ var _this = this;
457
+
458
+ var canUse;
459
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
326
460
  while (1) {
327
- switch (_context.prev = _context.next) {
461
+ switch (_context3.prev = _context3.next) {
328
462
  case 0:
329
- _context.next = 2;
463
+ this.calculateAdBannerTop();
464
+
465
+ canUse = this.canUseCoverAdAPI();
466
+
467
+ if (!canUse) {
468
+ _context3.next = 6;
469
+ break;
470
+ }
471
+
472
+ setTimeout(function () {
473
+ wx.getShowSplashAdStatus({
474
+ success: function () {
475
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(res) {
476
+ return regeneratorRuntime.wrap(function _callee$(_context) {
477
+ while (1) {
478
+ switch (_context.prev = _context.next) {
479
+ case 0:
480
+ if (!(res.status === 'fail')) {
481
+ _context.next = 6;
482
+ break;
483
+ }
484
+
485
+ _context.next = 3;
486
+ return adBase.initAds.call(_this);
487
+
488
+ case 3:
489
+ _this.startCountDown();
490
+ _context.next = 7;
491
+ break;
492
+
493
+ case 6:
494
+ _this.jump();
495
+
496
+ case 7:
497
+ case 'end':
498
+ return _context.stop();
499
+ }
500
+ }
501
+ }, _callee, _this);
502
+ }));
503
+
504
+ function success(_x) {
505
+ return _ref2.apply(this, arguments);
506
+ }
507
+
508
+ return success;
509
+ }(),
510
+ fail: function () {
511
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(err) {
512
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
513
+ while (1) {
514
+ switch (_context2.prev = _context2.next) {
515
+ case 0:
516
+ _context2.next = 2;
517
+ return adBase.initAds.call(_this);
518
+
519
+ case 2:
520
+ _this.startCountDown();
521
+
522
+ case 3:
523
+ case 'end':
524
+ return _context2.stop();
525
+ }
526
+ }
527
+ }, _callee2, _this);
528
+ }));
529
+
530
+ function fail(_x2) {
531
+ return _ref3.apply(this, arguments);
532
+ }
533
+
534
+ return fail;
535
+ }()
536
+ });
537
+ }, 100);
538
+ _context3.next = 9;
539
+ break;
540
+
541
+ case 6:
542
+ _context3.next = 8;
330
543
  return adBase.initAds.call(this);
331
544
 
332
- case 2:
545
+ case 8:
333
546
  this.startCountDown();
334
547
 
335
- case 3:
548
+ case 9:
336
549
  case 'end':
337
- return _context.stop();
550
+ return _context3.stop();
338
551
  }
339
552
  }
340
- }, _callee, this);
553
+ }, _callee3, this);
341
554
  }));
342
555
 
343
556
  function attached() {
@@ -348,6 +561,18 @@ Component({
348
561
  }()
349
562
  },
350
563
  methods: {
564
+ checkAndResetDaily: function checkAndResetDaily() {
565
+ return adBase.checkAndResetDaily.call(this);
566
+ },
567
+ isWxAdFailed: function isWxAdFailed() {
568
+ return adBase.isWxAdFailed.call(this);
569
+ },
570
+ markWxAdFailed: function markWxAdFailed() {
571
+ adBase.markWxAdFailed.call(this);
572
+ },
573
+ isAllCustomAdsReachedLimit: function isAllCustomAdsReachedLimit() {
574
+ return adBase.isAllCustomAdsReachedLimit.call(this);
575
+ },
351
576
  restoreAdState: function restoreAdState() {
352
577
  adBase.restoreAdState.call(this);
353
578
  },
@@ -370,17 +595,57 @@ Component({
370
595
  adBase.adOpenMiniProgram.call(this);
371
596
  },
372
597
  startCountDown: function startCountDown() {
373
- var _this = this;
598
+ var _this2 = this;
374
599
 
375
600
  this.interval = setInterval(function () {
376
- _this.setData({
377
- countDown: _this.data.countDown - 1
601
+ _this2.setData({
602
+ countDown: _this2.data.countDown - 1
378
603
  });
379
- if (_this.data.countDown === 0) {
380
- _this.jump();
604
+ if (_this2.data.countDown === 0) {
605
+ _this2.jump();
381
606
  }
382
607
  }, 1100);
383
608
  },
609
+ calculateAdBannerTop: function calculateAdBannerTop() {
610
+ try {
611
+ var menuRect = wx.getMenuButtonBoundingClientRect();
612
+ var systemInfo = wx.getSystemInfoSync();
613
+
614
+ var isCustomNavBar = systemInfo.screenHeight === systemInfo.windowHeight;
615
+
616
+ var top = void 0;
617
+ if (isCustomNavBar) {
618
+ top = menuRect.bottom + 10;
619
+ } else {
620
+ top = systemInfo.statusBarHeight + 20;
621
+ }
622
+
623
+ var topInRpx = top * 750 / systemInfo.windowWidth;
624
+
625
+ this.setData({
626
+ adBannerTop: topInRpx
627
+ });
628
+ } catch (err) {}
629
+ },
630
+ compareVersion: function compareVersion(v1, v2) {
631
+ var s1 = v1.split('.').map(Number);
632
+ var s2 = v2.split('.').map(Number);
633
+ var len = Math.max(s1.length, s2.length);
634
+
635
+ for (var i = 0; i < len; i++) {
636
+ var n1 = s1[i] || 0;
637
+ var n2 = s2[i] || 0;
638
+ if (n1 > n2) return 1;
639
+ if (n1 < n2) return -1;
640
+ }
641
+ return 0;
642
+ },
643
+ canUseCoverAdAPI: function canUseCoverAdAPI() {
644
+ var REQUIRED_VERSION = '3.7.8';
645
+ var systemInfo = wx.getSystemInfoSync();
646
+ var sdkVersion = systemInfo.SDKVersion;
647
+ return this.compareVersion(sdkVersion, REQUIRED_VERSION) >= 0;
648
+ },
384
649
  jump: function jump() {
385
650
  this.setData({
386
651
  splashStatus: false
@@ -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","restoreAdState","slotId","properties","type","adIndexKey","adShowCountKey","savedIndex","wx","getStorageSync","savedShowCount","setData","currentAdIndex","currentAdShowCount","saveAdState","setStorageSync","data","loadNextAd","ads","length","currentIndex","showCount","currentAd","maxShowCount","ad","undefined","report","actionType","source","adId","id","time","Date","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","lifetimes","attached","call","startCountDown","methods","interval","setInterval","jump","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 restoreAdState() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const adIndexKey = `adIndex_${slotId}_${type}`\r\n const adShowCountKey = `adShowCount_${slotId}_${type}`\r\n\r\n const savedIndex = wx.getStorageSync(adIndexKey) || 0\r\n const savedShowCount = wx.getStorageSync(adShowCountKey) || 0\r\n\r\n this.setData({\r\n currentAdIndex: savedIndex,\r\n currentAdShowCount: savedShowCount\r\n })\r\n },\r\n\r\n saveAdState() {\r\n const slotId = this.properties.slotId\r\n const type = this.properties.type\r\n const adIndexKey = `adIndex_${slotId}_${type}`\r\n const adShowCountKey = `adShowCount_${slotId}_${type}`\r\n\r\n wx.setStorageSync(adIndexKey, this.data.currentAdIndex)\r\n wx.setStorageSync(adShowCountKey, this.data.currentAdShowCount)\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 let currentIndex = this.data.currentAdIndex\r\n let showCount = this.data.currentAdShowCount\r\n\r\n const currentAd = ads[currentIndex % ads.length]\r\n\r\n const maxShowCount = currentAd.showCount || 1\r\n if (showCount >= maxShowCount) {\r\n currentIndex = currentIndex + 1\r\n showCount = 0\r\n this.setData({\r\n currentAdIndex: currentIndex,\r\n currentAdShowCount: showCount\r\n })\r\n this.saveAdState()\r\n }\r\n\r\n const ad = ads[currentIndex % ads.length]\r\n this.setData({currentAd: ad})\r\n\r\n if (ad[this.properties.type] === undefined) {\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 this.setData({\r\n currentAdShowCount: showCount + 1\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\r\n adError(e) {\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 this.restoreAdState()\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 },\r\n lifetimes: {\r\n async attached() {\r\n await adBase.initAds.call(this)\r\n this.startCountDown()\r\n }\r\n },\r\n methods: {\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 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 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,5 +1,5 @@
1
1
  <view wx:if="{{splashStatus && currentAd.splash.unitId}}" class="splash-container">
2
- <view class="ad-banner-top">
2
+ <view class="ad-banner-top" style="top: {{adBannerTop}}rpx;">
3
3
  <text class="ad-tag">广告</text>
4
4
  <text class="ad-timer">{{countDown}} 秒</text>
5
5
  <view class="skip-btn" bindtap="jump">跳过</view>
@@ -5,7 +5,6 @@
5
5
 
6
6
  .ad-banner-top {
7
7
  position: absolute;
8
- top: 160rpx;
9
8
  right: 20rpx;
10
9
  display: flex;
11
10
  align-items: center;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jyj-components",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "",
5
5
  "main": "miniprogram_dist/index.js",
6
6
  "scripts": {
@@ -12,7 +12,8 @@ Component({
12
12
  ads: [],
13
13
  currentAd: {},
14
14
  currentAdIndex: 0,
15
- currentAdShowCount: 0
15
+ currentAdShowCount: 0,
16
+ wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)
16
17
  },
17
18
  lifetimes: {
18
19
  async attached() {
@@ -20,6 +21,18 @@ Component({
20
21
  }
21
22
  },
22
23
  methods: {
24
+ checkAndResetDaily() {
25
+ return adBase.checkAndResetDaily.call(this)
26
+ },
27
+ isWxAdFailed() {
28
+ return adBase.isWxAdFailed.call(this)
29
+ },
30
+ markWxAdFailed() {
31
+ adBase.markWxAdFailed.call(this)
32
+ },
33
+ isAllCustomAdsReachedLimit() {
34
+ return adBase.isAllCustomAdsReachedLimit.call(this)
35
+ },
23
36
  restoreAdState() {
24
37
  adBase.restoreAdState.call(this)
25
38
  },
@@ -36,7 +49,8 @@ Component({
36
49
  adBase.adLoad.call(this, e)
37
50
  },
38
51
  adError(e) {
39
- adBase.adError.call(this, e)
52
+ adBase.adError.call(this, e) // 先标记失败
53
+ this.loadNextAd(); // 再切换广告
40
54
  },
41
55
  adOpenMiniProgram() {
42
56
  adBase.adOpenMiniProgram.call(this)
@@ -23,7 +23,8 @@ Component({
23
23
  currentAd: {},
24
24
  currentAdIndex: 0,
25
25
  currentAdShowCount: 0,
26
- isshow: false
26
+ isshow: false,
27
+ wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)
27
28
  },
28
29
  lifetimes: {
29
30
  async attached() {
@@ -32,6 +33,18 @@ Component({
32
33
  }
33
34
  },
34
35
  methods: {
36
+ checkAndResetDaily() {
37
+ return adBase.checkAndResetDaily.call(this)
38
+ },
39
+ isWxAdFailed() {
40
+ return adBase.isWxAdFailed.call(this)
41
+ },
42
+ markWxAdFailed() {
43
+ adBase.markWxAdFailed.call(this)
44
+ },
45
+ isAllCustomAdsReachedLimit() {
46
+ return adBase.isAllCustomAdsReachedLimit.call(this)
47
+ },
35
48
  restoreAdState() {
36
49
  adBase.restoreAdState.call(this)
37
50
  },
@@ -48,7 +61,8 @@ Component({
48
61
  adBase.adLoad.call(this, e)
49
62
  },
50
63
  adError(e) {
51
- adBase.adError.call(this, e)
64
+ adBase.adError.call(this, e) // 先标记失败
65
+ this.loadNextAd(); // 再切换广告
52
66
  },
53
67
  adOpenMiniProgram() {
54
68
  adBase.adOpenMiniProgram.call(this)
@@ -91,8 +105,8 @@ Component({
91
105
  this.interstitialAd.destroy()
92
106
  this.interstitialAd = null
93
107
  }
94
- this.loadNextAd()
95
- this.loadInterstitial()
108
+ // this.loadNextAd()
109
+ // this.loadInterstitial()
96
110
  },
97
111
 
98
112
  handleClose() {