产品需求:用户第一次进入产品时,给用户推广并弹出广告;当用户在24小时重新登录时,不在弹出广告;24小时后,也是在用户第一次登录时弹出
代码设计:
1、判断今天是否已经弹出过弹框
2、如若已经弹出过弹框,是否已经超过24小时
代码:
调用界面
/*判断今天用户是否弹出过弹框*/isPushOffBox:function(){var that = this;util.isPushOffBox().catch(error => {that.setData({pushOffBox:false// pushOffBox: 'none'})}).then(value => {console.log(value);if(value){that.setData({pushOffBox: true// pushOffBox: 'flex'})}})}
全局函数:
/*控制显示首页弹框,时效24小时*/
function isPushOffBox(){return new Promise(function (resolve, reject) {const lock = wx.getStorageSync('lock');const lockNum = wx.getStorageSync('lockNum');const lockZeroPoint = wx.getStorageSync('lockZeroPoint');if(lock){var flag = parseInt((new Date() - lock) / 1000) <= 24 * 3600 * 1000 ? true : false;var isFlag = new Date() >= lockZeroPoint ? true:false;//过了零点,弹框将重新记录if (isFlag){wx.setStorageSync('lockNum', 1);wx.setStorageSync('lock', new Date());wx.setStorageSync('lockZeroPoint', new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000));//重新记录当前零点resolve(true);}else{if(flag){if (lockNum==0){//当天还未弹框wx.setStorageSync('lockNum', 1);wx.setStorageSync('lock', new Date());wx.setStorageSync('lockZeroPoint', new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000));//重新记录当前零点resolve(true);}else{reject(false);}}else{//大于一天,弹出弹框并重新记录wx.setStorageSync('lock', new Date());wx.setStorageSync('lockZeroPoint', new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000));//重新记录当前零点wx.setStorageSync('lockNum', 1);resolve(true);}}}else{wx.setStorageSync('lock', new Date());wx.setStorageSync('lockZeroPoint', new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000));//记录当前的零点wx.setStorageSync('lockNum', 1);resolve(true);}})
}