jyj-components 1.0.9 → 1.0.10
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.
|
@@ -451,101 +451,22 @@ Component({
|
|
|
451
451
|
wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)
|
|
452
452
|
},
|
|
453
453
|
lifetimes: {
|
|
454
|
-
attached: function () {
|
|
455
|
-
var
|
|
456
|
-
var _this = this;
|
|
454
|
+
attached: function attached() {
|
|
455
|
+
var _this = this;
|
|
457
456
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
case 0:
|
|
463
|
-
this.calculateAdBannerTop();
|
|
464
|
-
|
|
465
|
-
canUse = this.canUseCoverAdAPI();
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
setTimeout(function () {
|
|
469
|
-
wx.getShowSplashAdStatus({
|
|
470
|
-
success: function () {
|
|
471
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(res) {
|
|
472
|
-
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
473
|
-
while (1) {
|
|
474
|
-
switch (_context.prev = _context.next) {
|
|
475
|
-
case 0:
|
|
476
|
-
if (!(res.status === 'fail' || res.status === 'unknown')) {
|
|
477
|
-
_context.next = 6;
|
|
478
|
-
break;
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
_context.next = 3;
|
|
482
|
-
return adBase.initAds.call(_this);
|
|
483
|
-
|
|
484
|
-
case 3:
|
|
485
|
-
_this.startCountDown();
|
|
486
|
-
_context.next = 7;
|
|
487
|
-
break;
|
|
488
|
-
|
|
489
|
-
case 6:
|
|
490
|
-
_this.jump();
|
|
491
|
-
|
|
492
|
-
case 7:
|
|
493
|
-
case 'end':
|
|
494
|
-
return _context.stop();
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
}, _callee, _this);
|
|
498
|
-
}));
|
|
499
|
-
|
|
500
|
-
function success(_x) {
|
|
501
|
-
return _ref2.apply(this, arguments);
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
return success;
|
|
505
|
-
}(),
|
|
506
|
-
fail: function () {
|
|
507
|
-
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(err) {
|
|
508
|
-
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
509
|
-
while (1) {
|
|
510
|
-
switch (_context2.prev = _context2.next) {
|
|
511
|
-
case 0:
|
|
512
|
-
_context2.next = 2;
|
|
513
|
-
return adBase.initAds.call(_this);
|
|
514
|
-
|
|
515
|
-
case 2:
|
|
516
|
-
_this.startCountDown();
|
|
517
|
-
|
|
518
|
-
case 3:
|
|
519
|
-
case 'end':
|
|
520
|
-
return _context2.stop();
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
}, _callee2, _this);
|
|
524
|
-
}));
|
|
525
|
-
|
|
526
|
-
function fail(_x2) {
|
|
527
|
-
return _ref3.apply(this, arguments);
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
return fail;
|
|
531
|
-
}()
|
|
532
|
-
});
|
|
533
|
-
}, 100);
|
|
534
|
-
|
|
535
|
-
case 3:
|
|
536
|
-
case 'end':
|
|
537
|
-
return _context3.stop();
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
}, _callee3, this);
|
|
541
|
-
}));
|
|
457
|
+
this.finished = false;
|
|
458
|
+
this.countdownStarted = false;
|
|
459
|
+
this.isDetached = false;
|
|
460
|
+
this.calculateAdBannerTop();
|
|
542
461
|
|
|
543
|
-
function
|
|
544
|
-
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
462
|
+
this.statusTimer = setTimeout(function () {
|
|
463
|
+
_this.checkSplashAdStatus();
|
|
464
|
+
}, 100);
|
|
465
|
+
},
|
|
466
|
+
detached: function detached() {
|
|
467
|
+
this.isDetached = true;
|
|
468
|
+
this.clearTimers();
|
|
469
|
+
}
|
|
549
470
|
},
|
|
550
471
|
methods: {
|
|
551
472
|
checkAndResetDaily: function checkAndResetDaily() {
|
|
@@ -574,25 +495,176 @@ Component({
|
|
|
574
495
|
},
|
|
575
496
|
adLoad: function adLoad(e) {
|
|
576
497
|
adBase.adLoad.call(this, e);
|
|
498
|
+
this.startCountDown();
|
|
577
499
|
},
|
|
578
500
|
adError: function adError(e) {
|
|
501
|
+
var failedAd = this.data.currentAd;
|
|
502
|
+
var failedIndex = this.data.currentAdIndex;
|
|
503
|
+
var hasFallback = false;
|
|
504
|
+
|
|
505
|
+
this.resetCountDown();
|
|
506
|
+
|
|
507
|
+
if (failedIndex === 0) {
|
|
508
|
+
this.markWxAdFailed();
|
|
509
|
+
this.loadNextAd();
|
|
510
|
+
hasFallback = this.hasSplashAd() && this.data.currentAd !== failedAd;
|
|
511
|
+
} else {
|
|
512
|
+
hasFallback = this.loadNextAvailableSplashAd(failedIndex + 1);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
if (hasFallback) {
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
|
|
579
519
|
adBase.adError.call(this, e);
|
|
580
|
-
this.
|
|
520
|
+
this.jump();
|
|
581
521
|
},
|
|
582
522
|
adOpenMiniProgram: function adOpenMiniProgram() {
|
|
583
523
|
adBase.adOpenMiniProgram.call(this);
|
|
584
524
|
},
|
|
585
|
-
|
|
525
|
+
checkSplashAdStatus: function checkSplashAdStatus() {
|
|
586
526
|
var _this2 = this;
|
|
587
527
|
|
|
528
|
+
if (this.isDetached) {
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
if (!this.canUseCoverAdAPI()) {
|
|
533
|
+
this.loadFallbackSplash();
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
try {
|
|
538
|
+
wx.getShowSplashAdStatus({
|
|
539
|
+
success: function success(res) {
|
|
540
|
+
if (res.status === 'fail') {
|
|
541
|
+
_this2.loadFallbackSplash();
|
|
542
|
+
} else {
|
|
543
|
+
_this2.jump();
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
fail: function fail(err) {
|
|
547
|
+
_this2.loadFallbackSplash(err);
|
|
548
|
+
}
|
|
549
|
+
});
|
|
550
|
+
} catch (err) {
|
|
551
|
+
this.loadFallbackSplash(err);
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
loadFallbackSplash: function () {
|
|
555
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(err) {
|
|
556
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
557
|
+
while (1) {
|
|
558
|
+
switch (_context.prev = _context.next) {
|
|
559
|
+
case 0:
|
|
560
|
+
if (err) {
|
|
561
|
+
this.splashStatusError = err;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
_context.prev = 1;
|
|
565
|
+
_context.next = 4;
|
|
566
|
+
return adBase.initAds.call(this);
|
|
567
|
+
|
|
568
|
+
case 4:
|
|
569
|
+
_context.next = 13;
|
|
570
|
+
break;
|
|
571
|
+
|
|
572
|
+
case 6:
|
|
573
|
+
_context.prev = 6;
|
|
574
|
+
_context.t0 = _context['catch'](1);
|
|
575
|
+
|
|
576
|
+
if (!this.isDetached) {
|
|
577
|
+
_context.next = 10;
|
|
578
|
+
break;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
return _context.abrupt('return');
|
|
582
|
+
|
|
583
|
+
case 10:
|
|
584
|
+
|
|
585
|
+
this.triggerEvent('adError', _context.t0);
|
|
586
|
+
this.jump();
|
|
587
|
+
return _context.abrupt('return');
|
|
588
|
+
|
|
589
|
+
case 13:
|
|
590
|
+
if (!this.isDetached) {
|
|
591
|
+
_context.next = 15;
|
|
592
|
+
break;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
return _context.abrupt('return');
|
|
596
|
+
|
|
597
|
+
case 15:
|
|
598
|
+
|
|
599
|
+
if (!this.hasSplashAd()) {
|
|
600
|
+
this.jump();
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
case 16:
|
|
604
|
+
case 'end':
|
|
605
|
+
return _context.stop();
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
}, _callee, this, [[1, 6]]);
|
|
609
|
+
}));
|
|
610
|
+
|
|
611
|
+
function loadFallbackSplash(_x) {
|
|
612
|
+
return _ref.apply(this, arguments);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
return loadFallbackSplash;
|
|
616
|
+
}(),
|
|
617
|
+
loadNextAvailableSplashAd: function loadNextAvailableSplashAd(startIndex) {
|
|
618
|
+
var ads = this.data.ads || [];
|
|
619
|
+
|
|
620
|
+
for (var i = startIndex; i < ads.length; i++) {
|
|
621
|
+
var ad = ads[i];
|
|
622
|
+
if (ad && ad[this.properties.type] !== undefined) {
|
|
623
|
+
this.setData({
|
|
624
|
+
currentAd: ad,
|
|
625
|
+
currentAdIndex: i,
|
|
626
|
+
currentAdShowCount: 0
|
|
627
|
+
});
|
|
628
|
+
this.saveAdState();
|
|
629
|
+
return true;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
return false;
|
|
634
|
+
},
|
|
635
|
+
hasSplashAd: function hasSplashAd() {
|
|
636
|
+
var ad = this.data.currentAd || {};
|
|
637
|
+
var splash = ad.splash || {};
|
|
638
|
+
return Boolean(splash.unitId || ad.source === 'custom' && splash.material);
|
|
639
|
+
},
|
|
640
|
+
startCountDown: function startCountDown() {
|
|
641
|
+
var _this3 = this;
|
|
642
|
+
|
|
643
|
+
if (this.countdownStarted || this.finished || this.isDetached) {
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
this.countdownStarted = true;
|
|
588
648
|
this.interval = setInterval(function () {
|
|
589
|
-
|
|
590
|
-
|
|
649
|
+
var countDown = _this3.data.countDown - 1;
|
|
650
|
+
_this3.setData({
|
|
651
|
+
countDown: countDown
|
|
591
652
|
});
|
|
592
|
-
if (
|
|
593
|
-
|
|
653
|
+
if (countDown <= 0) {
|
|
654
|
+
_this3.jump();
|
|
594
655
|
}
|
|
595
|
-
},
|
|
656
|
+
}, 1000);
|
|
657
|
+
},
|
|
658
|
+
resetCountDown: function resetCountDown() {
|
|
659
|
+
if (this.interval) {
|
|
660
|
+
clearInterval(this.interval);
|
|
661
|
+
this.interval = null;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
this.countdownStarted = false;
|
|
665
|
+
this.setData({
|
|
666
|
+
countDown: 5
|
|
667
|
+
});
|
|
596
668
|
},
|
|
597
669
|
calculateAdBannerTop: function calculateAdBannerTop() {
|
|
598
670
|
try {
|
|
@@ -613,7 +685,9 @@ Component({
|
|
|
613
685
|
this.setData({
|
|
614
686
|
adBannerTop: topInRpx
|
|
615
687
|
});
|
|
616
|
-
} catch (err) {
|
|
688
|
+
} catch (err) {
|
|
689
|
+
this.layoutError = err;
|
|
690
|
+
}
|
|
617
691
|
},
|
|
618
692
|
compareVersion: function compareVersion(v1, v2) {
|
|
619
693
|
var s1 = v1.split('.').map(Number);
|
|
@@ -630,15 +704,37 @@ Component({
|
|
|
630
704
|
},
|
|
631
705
|
canUseCoverAdAPI: function canUseCoverAdAPI() {
|
|
632
706
|
var REQUIRED_VERSION = '3.7.8';
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
707
|
+
|
|
708
|
+
try {
|
|
709
|
+
var systemInfo = wx.getSystemInfoSync();
|
|
710
|
+
var sdkVersion = systemInfo.SDKVersion || '0.0.0';
|
|
711
|
+
return typeof wx.getShowSplashAdStatus === 'function' && this.compareVersion(sdkVersion, REQUIRED_VERSION) >= 0;
|
|
712
|
+
} catch (err) {
|
|
713
|
+
this.coverAdApiError = err;
|
|
714
|
+
return false;
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
clearTimers: function clearTimers() {
|
|
718
|
+
if (this.statusTimer) {
|
|
719
|
+
clearTimeout(this.statusTimer);
|
|
720
|
+
this.statusTimer = null;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
if (this.interval) {
|
|
724
|
+
clearInterval(this.interval);
|
|
725
|
+
this.interval = null;
|
|
726
|
+
}
|
|
636
727
|
},
|
|
637
728
|
jump: function jump() {
|
|
729
|
+
if (this.finished || this.isDetached) {
|
|
730
|
+
return;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
this.finished = true;
|
|
734
|
+
this.clearTimers();
|
|
638
735
|
this.setData({
|
|
639
736
|
splashStatus: false
|
|
640
737
|
});
|
|
641
|
-
clearInterval(this.interval);
|
|
642
738
|
this.adFinished({ detail: { msg: '开屏广告结束' } });
|
|
643
739
|
},
|
|
644
740
|
adFinished: function adFinished(e) {
|
|
@@ -646,6 +742,7 @@ Component({
|
|
|
646
742
|
},
|
|
647
743
|
adClose: function adClose(e) {
|
|
648
744
|
this.triggerEvent('adClose', e || { msg: 'ad close' });
|
|
745
|
+
this.jump();
|
|
649
746
|
}
|
|
650
747
|
}
|
|
651
748
|
});
|
|
@@ -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\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 this.loadNextAd()\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","finished","countdownStarted","isDetached","calculateAdBannerTop","statusTimer","setTimeout","checkSplashAdStatus","detached","clearTimers","methods","call","startCountDown","failedAd","failedIndex","hasFallback","resetCountDown","hasSplashAd","loadNextAvailableSplashAd","jump","canUseCoverAdAPI","loadFallbackSplash","getShowSplashAdStatus","status","splashStatusError","startIndex","splash","Boolean","unitId","material","interval","setInterval","clearInterval","menuRect","getMenuButtonBoundingClientRect","systemInfo","getSystemInfoSync","isCustomNavBar","screenHeight","windowHeight","top","bottom","statusBarHeight","topInRpx","windowWidth","layoutError","compareVersion","v1","v2","s1","split","map","Number","s2","len","Math","max","n1","n2","REQUIRED_VERSION","sdkVersion","SDKVersion","coverAdApiError","clearTimeout","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')\n\nComponent({\n properties: {\n slotId: String,\n type: {\n type: String,\n value: 'splash'\n }\n },\n data: {\n ads: [],\n currentAd: {},\n currentAdIndex: 0,\n currentAdShowCount: 0,\n countDown: 5,\n splashStatus: true,\n adBannerTop: 60,\n wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)\n },\n lifetimes: {\n attached() {\n this.finished = false\n this.countdownStarted = false\n this.isDetached = false\n this.calculateAdBannerTop()\n\n this.statusTimer = setTimeout(() => {\n this.checkSplashAdStatus()\n }, 100)\n },\n detached() {\n this.isDetached = true\n this.clearTimers()\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 this.startCountDown()\n },\n adError(e) {\n const failedAd = this.data.currentAd\n const failedIndex = this.data.currentAdIndex\n let hasFallback = false\n\n this.resetCountDown()\n\n if (failedIndex === 0) {\n this.markWxAdFailed()\n this.loadNextAd()\n hasFallback = this.hasSplashAd() && this.data.currentAd !== failedAd\n } else {\n hasFallback = this.loadNextAvailableSplashAd(failedIndex + 1)\n }\n\n if (hasFallback) {\n return\n }\n\n adBase.adError.call(this, e)\n this.jump()\n },\n adOpenMiniProgram() {\n adBase.adOpenMiniProgram.call(this)\n },\n checkSplashAdStatus() {\n if (this.isDetached) {\n return\n }\n\n if (!this.canUseCoverAdAPI()) {\n this.loadFallbackSplash()\n return\n }\n\n try {\n wx.getShowSplashAdStatus({\n success: res => {\n if (res.status === 'fail') {\n this.loadFallbackSplash()\n } else {\n this.jump()\n }\n },\n fail: err => {\n this.loadFallbackSplash(err)\n }\n })\n } catch (err) {\n this.loadFallbackSplash(err)\n }\n },\n\n async loadFallbackSplash(err) {\n if (err) {\n this.splashStatusError = err\n }\n\n try {\n await adBase.initAds.call(this)\n } catch (error) {\n if (this.isDetached) {\n return\n }\n\n this.triggerEvent('adError', error)\n this.jump()\n return\n }\n\n if (this.isDetached) {\n return\n }\n\n if (!this.hasSplashAd()) {\n this.jump()\n }\n },\n\n loadNextAvailableSplashAd(startIndex) {\n const ads = this.data.ads || []\n\n for (let i = startIndex; i < ads.length; i++) {\n const ad = ads[i]\n if (ad && ad[this.properties.type] !== undefined) {\n this.setData({\n currentAd: ad,\n currentAdIndex: i,\n currentAdShowCount: 0\n })\n this.saveAdState()\n return true\n }\n }\n\n return false\n },\n\n hasSplashAd() {\n const ad = this.data.currentAd || {}\n const splash = ad.splash || {}\n return Boolean(splash.unitId || (ad.source === 'custom' && splash.material))\n },\n\n startCountDown() {\n if (this.countdownStarted || this.finished || this.isDetached) {\n return\n }\n\n this.countdownStarted = true\n this.interval = setInterval(() => {\n const countDown = this.data.countDown - 1\n this.setData({\n countDown\n })\n if (countDown <= 0) {\n this.jump()\n }\n }, 1000)\n },\n\n resetCountDown() {\n if (this.interval) {\n clearInterval(this.interval)\n this.interval = null\n }\n\n this.countdownStarted = false\n this.setData({\n countDown: 5\n })\n },\n\n calculateAdBannerTop() {\n try {\n const menuRect = wx.getMenuButtonBoundingClientRect()\n const systemInfo = wx.getSystemInfoSync()\n\n const isCustomNavBar = (systemInfo.screenHeight === systemInfo.windowHeight)\n\n let top\n if (isCustomNavBar) {\n top = menuRect.bottom + 10\n } else {\n top = systemInfo.statusBarHeight + 20\n }\n\n const topInRpx = top * 750 / systemInfo.windowWidth\n\n this.setData({\n adBannerTop: topInRpx\n })\n } catch (err) {\n this.layoutError = err\n }\n },\n\n compareVersion(v1, v2) {\n const s1 = v1.split('.').map(Number)\n const s2 = v2.split('.').map(Number)\n const len = Math.max(s1.length, s2.length)\n\n for (let i = 0; i < len; i++) {\n const n1 = s1[i] || 0\n const n2 = s2[i] || 0\n if (n1 > n2) return 1\n if (n1 < n2) return -1\n }\n return 0\n },\n canUseCoverAdAPI() {\n const REQUIRED_VERSION = '3.7.8'\n\n try {\n const systemInfo = wx.getSystemInfoSync()\n const sdkVersion = systemInfo.SDKVersion || '0.0.0'\n return typeof wx.getShowSplashAdStatus === 'function' &&\n this.compareVersion(sdkVersion, REQUIRED_VERSION) >= 0\n } catch (err) {\n this.coverAdApiError = err\n return false\n }\n },\n\n clearTimers() {\n if (this.statusTimer) {\n clearTimeout(this.statusTimer)\n this.statusTimer = null\n }\n\n if (this.interval) {\n clearInterval(this.interval)\n this.interval = null\n }\n },\n\n jump() {\n if (this.finished || this.isDetached) {\n return\n }\n\n this.finished = true\n this.clearTimers()\n this.setData({\n splashStatus: false\n })\n this.adFinished({detail: {msg: '开屏广告结束'}})\n },\n\n adFinished(e) {\n this.triggerEvent('adFinished', e.detail || {msg: 'ad finished'})\n },\n\n adClose(e) {\n this.triggerEvent('adClose', e || {msg: 'ad close'})\n this.jump()\n }\n }\n})\n"],"sourceRoot":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<view wx:if="{{splashStatus && currentAd.splash.unitId}}" class="splash-container">
|
|
1
|
+
<view wx:if="{{splashStatus && currentAd.splash && currentAd.splash.unitId}}" class="splash-container">
|
|
2
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>
|
package/package.json
CHANGED
package/src/ad-splash/index.js
CHANGED
|
@@ -1,152 +1,284 @@
|
|
|
1
|
-
const adBase = require('../mixins/ad-base
|
|
2
|
-
|
|
3
|
-
Component({
|
|
4
|
-
properties: {
|
|
5
|
-
slotId: String,
|
|
6
|
-
type: {
|
|
7
|
-
type: String,
|
|
8
|
-
value: 'splash'
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
data: {
|
|
12
|
-
ads: [],
|
|
13
|
-
currentAd: {},
|
|
14
|
-
currentAdIndex: 0,
|
|
15
|
-
currentAdShowCount: 0,
|
|
16
|
-
countDown: 5,
|
|
17
|
-
splashStatus: true,
|
|
18
|
-
adBannerTop: 60,
|
|
19
|
-
wxAdFailed: false
|
|
20
|
-
},
|
|
21
|
-
lifetimes: {
|
|
22
|
-
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
setTimeout(() => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
},
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
1
|
+
const adBase = require('../mixins/ad-base')
|
|
2
|
+
|
|
3
|
+
Component({
|
|
4
|
+
properties: {
|
|
5
|
+
slotId: String,
|
|
6
|
+
type: {
|
|
7
|
+
type: String,
|
|
8
|
+
value: 'splash'
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
data: {
|
|
12
|
+
ads: [],
|
|
13
|
+
currentAd: {},
|
|
14
|
+
currentAdIndex: 0,
|
|
15
|
+
currentAdShowCount: 0,
|
|
16
|
+
countDown: 5,
|
|
17
|
+
splashStatus: true,
|
|
18
|
+
adBannerTop: 60,
|
|
19
|
+
wxAdFailed: false // 微信广告失败标记(仅内存,不持久化)
|
|
20
|
+
},
|
|
21
|
+
lifetimes: {
|
|
22
|
+
attached() {
|
|
23
|
+
this.finished = false
|
|
24
|
+
this.countdownStarted = false
|
|
25
|
+
this.isDetached = false
|
|
26
|
+
this.calculateAdBannerTop()
|
|
27
|
+
|
|
28
|
+
this.statusTimer = setTimeout(() => {
|
|
29
|
+
this.checkSplashAdStatus()
|
|
30
|
+
}, 100)
|
|
31
|
+
},
|
|
32
|
+
detached() {
|
|
33
|
+
this.isDetached = true
|
|
34
|
+
this.clearTimers()
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
methods: {
|
|
38
|
+
checkAndResetDaily() {
|
|
39
|
+
return adBase.checkAndResetDaily.call(this)
|
|
40
|
+
},
|
|
41
|
+
isWxAdFailed() {
|
|
42
|
+
return adBase.isWxAdFailed.call(this)
|
|
43
|
+
},
|
|
44
|
+
markWxAdFailed() {
|
|
45
|
+
adBase.markWxAdFailed.call(this)
|
|
46
|
+
},
|
|
47
|
+
isAllCustomAdsReachedLimit() {
|
|
48
|
+
return adBase.isAllCustomAdsReachedLimit.call(this)
|
|
49
|
+
},
|
|
50
|
+
restoreAdState() {
|
|
51
|
+
adBase.restoreAdState.call(this)
|
|
52
|
+
},
|
|
53
|
+
saveAdState() {
|
|
54
|
+
adBase.saveAdState.call(this)
|
|
55
|
+
},
|
|
56
|
+
loadNextAd() {
|
|
57
|
+
adBase.loadNextAd.call(this)
|
|
58
|
+
},
|
|
59
|
+
report(actionType) {
|
|
60
|
+
adBase.report.call(this, actionType)
|
|
61
|
+
},
|
|
62
|
+
adLoad(e) {
|
|
63
|
+
adBase.adLoad.call(this, e)
|
|
64
|
+
this.startCountDown()
|
|
65
|
+
},
|
|
66
|
+
adError(e) {
|
|
67
|
+
const failedAd = this.data.currentAd
|
|
68
|
+
const failedIndex = this.data.currentAdIndex
|
|
69
|
+
let hasFallback = false
|
|
70
|
+
|
|
71
|
+
this.resetCountDown()
|
|
72
|
+
|
|
73
|
+
if (failedIndex === 0) {
|
|
74
|
+
this.markWxAdFailed()
|
|
75
|
+
this.loadNextAd()
|
|
76
|
+
hasFallback = this.hasSplashAd() && this.data.currentAd !== failedAd
|
|
77
|
+
} else {
|
|
78
|
+
hasFallback = this.loadNextAvailableSplashAd(failedIndex + 1)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (hasFallback) {
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
adBase.adError.call(this, e)
|
|
86
|
+
this.jump()
|
|
87
|
+
},
|
|
88
|
+
adOpenMiniProgram() {
|
|
89
|
+
adBase.adOpenMiniProgram.call(this)
|
|
90
|
+
},
|
|
91
|
+
checkSplashAdStatus() {
|
|
92
|
+
if (this.isDetached) {
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (!this.canUseCoverAdAPI()) {
|
|
97
|
+
this.loadFallbackSplash()
|
|
98
|
+
return
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
try {
|
|
102
|
+
wx.getShowSplashAdStatus({
|
|
103
|
+
success: res => {
|
|
104
|
+
if (res.status === 'fail') {
|
|
105
|
+
this.loadFallbackSplash()
|
|
106
|
+
} else {
|
|
107
|
+
this.jump()
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
fail: err => {
|
|
111
|
+
this.loadFallbackSplash(err)
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
} catch (err) {
|
|
115
|
+
this.loadFallbackSplash(err)
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
async loadFallbackSplash(err) {
|
|
120
|
+
if (err) {
|
|
121
|
+
this.splashStatusError = err
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
await adBase.initAds.call(this)
|
|
126
|
+
} catch (error) {
|
|
127
|
+
if (this.isDetached) {
|
|
128
|
+
return
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
this.triggerEvent('adError', error)
|
|
132
|
+
this.jump()
|
|
133
|
+
return
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (this.isDetached) {
|
|
137
|
+
return
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (!this.hasSplashAd()) {
|
|
141
|
+
this.jump()
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
loadNextAvailableSplashAd(startIndex) {
|
|
146
|
+
const ads = this.data.ads || []
|
|
147
|
+
|
|
148
|
+
for (let i = startIndex; i < ads.length; i++) {
|
|
149
|
+
const ad = ads[i]
|
|
150
|
+
if (ad && ad[this.properties.type] !== undefined) {
|
|
151
|
+
this.setData({
|
|
152
|
+
currentAd: ad,
|
|
153
|
+
currentAdIndex: i,
|
|
154
|
+
currentAdShowCount: 0
|
|
155
|
+
})
|
|
156
|
+
this.saveAdState()
|
|
157
|
+
return true
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return false
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
hasSplashAd() {
|
|
165
|
+
const ad = this.data.currentAd || {}
|
|
166
|
+
const splash = ad.splash || {}
|
|
167
|
+
return Boolean(splash.unitId || (ad.source === 'custom' && splash.material))
|
|
168
|
+
},
|
|
169
|
+
|
|
170
|
+
startCountDown() {
|
|
171
|
+
if (this.countdownStarted || this.finished || this.isDetached) {
|
|
172
|
+
return
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
this.countdownStarted = true
|
|
176
|
+
this.interval = setInterval(() => {
|
|
177
|
+
const countDown = this.data.countDown - 1
|
|
178
|
+
this.setData({
|
|
179
|
+
countDown
|
|
180
|
+
})
|
|
181
|
+
if (countDown <= 0) {
|
|
182
|
+
this.jump()
|
|
183
|
+
}
|
|
184
|
+
}, 1000)
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
resetCountDown() {
|
|
188
|
+
if (this.interval) {
|
|
189
|
+
clearInterval(this.interval)
|
|
190
|
+
this.interval = null
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
this.countdownStarted = false
|
|
194
|
+
this.setData({
|
|
195
|
+
countDown: 5
|
|
196
|
+
})
|
|
197
|
+
},
|
|
198
|
+
|
|
199
|
+
calculateAdBannerTop() {
|
|
200
|
+
try {
|
|
201
|
+
const menuRect = wx.getMenuButtonBoundingClientRect()
|
|
202
|
+
const systemInfo = wx.getSystemInfoSync()
|
|
203
|
+
|
|
204
|
+
const isCustomNavBar = (systemInfo.screenHeight === systemInfo.windowHeight)
|
|
205
|
+
|
|
206
|
+
let top
|
|
207
|
+
if (isCustomNavBar) {
|
|
208
|
+
top = menuRect.bottom + 10
|
|
209
|
+
} else {
|
|
210
|
+
top = systemInfo.statusBarHeight + 20
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const topInRpx = top * 750 / systemInfo.windowWidth
|
|
214
|
+
|
|
215
|
+
this.setData({
|
|
216
|
+
adBannerTop: topInRpx
|
|
217
|
+
})
|
|
218
|
+
} catch (err) {
|
|
219
|
+
this.layoutError = err
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
|
|
223
|
+
compareVersion(v1, v2) {
|
|
224
|
+
const s1 = v1.split('.').map(Number)
|
|
225
|
+
const s2 = v2.split('.').map(Number)
|
|
226
|
+
const len = Math.max(s1.length, s2.length)
|
|
227
|
+
|
|
228
|
+
for (let i = 0; i < len; i++) {
|
|
229
|
+
const n1 = s1[i] || 0
|
|
230
|
+
const n2 = s2[i] || 0
|
|
231
|
+
if (n1 > n2) return 1
|
|
232
|
+
if (n1 < n2) return -1
|
|
233
|
+
}
|
|
234
|
+
return 0
|
|
235
|
+
},
|
|
236
|
+
canUseCoverAdAPI() {
|
|
237
|
+
const REQUIRED_VERSION = '3.7.8'
|
|
238
|
+
|
|
239
|
+
try {
|
|
240
|
+
const systemInfo = wx.getSystemInfoSync()
|
|
241
|
+
const sdkVersion = systemInfo.SDKVersion || '0.0.0'
|
|
242
|
+
return typeof wx.getShowSplashAdStatus === 'function' &&
|
|
243
|
+
this.compareVersion(sdkVersion, REQUIRED_VERSION) >= 0
|
|
244
|
+
} catch (err) {
|
|
245
|
+
this.coverAdApiError = err
|
|
246
|
+
return false
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
|
|
250
|
+
clearTimers() {
|
|
251
|
+
if (this.statusTimer) {
|
|
252
|
+
clearTimeout(this.statusTimer)
|
|
253
|
+
this.statusTimer = null
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (this.interval) {
|
|
257
|
+
clearInterval(this.interval)
|
|
258
|
+
this.interval = null
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
|
|
262
|
+
jump() {
|
|
263
|
+
if (this.finished || this.isDetached) {
|
|
264
|
+
return
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
this.finished = true
|
|
268
|
+
this.clearTimers()
|
|
269
|
+
this.setData({
|
|
270
|
+
splashStatus: false
|
|
271
|
+
})
|
|
272
|
+
this.adFinished({detail: {msg: '开屏广告结束'}})
|
|
273
|
+
},
|
|
274
|
+
|
|
275
|
+
adFinished(e) {
|
|
276
|
+
this.triggerEvent('adFinished', e.detail || {msg: 'ad finished'})
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
adClose(e) {
|
|
280
|
+
this.triggerEvent('adClose', e || {msg: 'ad close'})
|
|
281
|
+
this.jump()
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
})
|
package/src/ad-splash/index.wxml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<view wx:if="{{splashStatus && currentAd.splash.unitId}}" class="splash-container">
|
|
1
|
+
<view wx:if="{{splashStatus && currentAd.splash && currentAd.splash.unitId}}" class="splash-container">
|
|
2
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>
|