小程序
小游戏
企业微信
微信支付
扫描小程序码分享
现在的弹窗是每次打开都弹窗
如何设计成每天弹出一次
类似弹窗签到那种
8 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
每日弹窗签到。建议还是利用服务器后端发来的数据做一下判断的好
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
就是为了获取fromID 没有实质性
同意,用户是可以修改设备的时间的,如果用系统时间来处理是有漏洞的
如果业务需要精准,比如是优惠弹窗,每个人一天只能一次的话,为了避免用户的一些行为,比如删缓存,修改系统时间,恶意让弹窗无限触发,那么后台记录是最安全的;如果只是一些提示性或者不重要的,其实最直接还是缓存用时间戳算出来当天年月日,下次打开的年月日其中一个变了就弹窗
可以考虑一下用第三方的推送服务(www.xiaoshentui.com),不仅可以控制一天只弹一次,还可以控制一天对一个用户弹几次。还提供第三方模板消息推送服务,结合用户标签系统,做精细化推送。
localstorage里面存一下上次打开时间
判断一下不就是了
利用本地存储,做个类似cookie的缓存,判断下不就行么。
怎么写可以教教吗 或者给下相关文档
其他人都说了,基本做法都那样的。
要多自己思考,不然永远只能做简单的东西。这问题还有这么多热心人回复太不可思议了
hhhh 谢谢教导
本地存个时间戳,每次进入小程序页面时判断一下时间戳对应的日期是否是今日,如果是,不弹窗,如果不是今日,则弹窗,同时更新缓存。这么简单的逻辑都实现不了建议你还是打打基础吧
wx.setStroageSync('lock',Data.now())
const lock = wx.getStorageSync('lock')
const e = this.diff(lock)
const diff = (t) => {
return (Data.now() -t) < 24*3600*1000 ? true : false
return
(Data.now() -t) < 24*3600*1000 ?
true
:
false
}
data: {
showModal:
},
// 外面的弹窗
btn:
function
() {
this
.setData({
})
// 禁止屏幕滚动
preventTouchMove:
// 弹出层里面的弹窗
ok:
//formID
getFormId:
(e) {
wx.BaaS.wxReportTicket(e.detail.formId)
<!-- 遮罩层 -->
<view class=
"mask"
catchtouchmove=
"preventTouchMove"
wx:
if
=
"{{showModal}}"
></view>
<!-- 弹出层 -->
"modalDlg"
>
<!-- 二维码或其他图片 -->
<view wx:
for
"{{tip}}"
wx:key=
'id'
class=
"text"
<wxparser rich-text=
"{{item.tip}}"
/>
</view>
<!--formID-->
'flex'
<button bindtap=
"ok"
>不好</button>
<form report-submit=
'true'
bindsubmit=
'getFormId'
form-type=
"submit"
>好的</button>
</form>
也是智晓云用户哟
在 onShow 里写咯
先读
再判断 是否在24小时内
再去 this.setData({})
不会,让我给你完全写完?
给钱麽
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
每日弹窗签到。建议还是利用服务器后端发来的数据做一下判断的好
就是为了获取fromID 没有实质性
同意,用户是可以修改设备的时间的,如果用系统时间来处理是有漏洞的
如果业务需要精准,比如是优惠弹窗,每个人一天只能一次的话,为了避免用户的一些行为,比如删缓存,修改系统时间,恶意让弹窗无限触发,那么后台记录是最安全的;如果只是一些提示性或者不重要的,其实最直接还是缓存用时间戳算出来当天年月日,下次打开的年月日其中一个变了就弹窗
可以考虑一下用第三方的推送服务(www.xiaoshentui.com),不仅可以控制一天只弹一次,还可以控制一天对一个用户弹几次。还提供第三方模板消息推送服务,结合用户标签系统,做精细化推送。
localstorage里面存一下上次打开时间
判断一下不就是了
利用本地存储,做个类似cookie的缓存,判断下不就行么。
怎么写可以教教吗 或者给下相关文档
其他人都说了,基本做法都那样的。
要多自己思考,不然永远只能做简单的东西。这问题还有这么多热心人回复太不可思议了
hhhh 谢谢教导
本地存个时间戳,每次进入小程序页面时判断一下时间戳对应的日期是否是今日,如果是,不弹窗,如果不是今日,则弹窗,同时更新缓存。这么简单的逻辑都实现不了建议你还是打打基础吧
wx.setStroageSync('lock',Data.now())
const lock = wx.getStorageSync('lock')
const e = this.diff(lock)
const diff = (t) => {return(Data.now() -t) < 24*3600*1000 ?true:false}data: {showModal:true},// 外面的弹窗btn:function() {this.setData({showModal:true})},// 禁止屏幕滚动preventTouchMove:function() {},// 弹出层里面的弹窗ok:function() {this.setData({showModal:false})},//formIDgetFormId:function(e) {wx.BaaS.wxReportTicket(e.detail.formId)},<!-- 遮罩层 --><view class="mask"catchtouchmove="preventTouchMove"wx:if="{{showModal}}"></view><!-- 弹出层 --><view class="modalDlg"wx:if="{{showModal}}"><!-- 二维码或其他图片 --><view wx:for="{{tip}}"wx:key='id'class="text"><wxparser rich-text="{{item.tip}}"/></view><!--formID--><view class='flex'><button bindtap="ok"class="ok">不好</button><form report-submit='true'bindsubmit='getFormId'><button bindtap="ok"class="ok"form-type="submit">好的</button></form></view>也是智晓云用户哟
在 onShow 里写咯
先读
const lock = wx.getStorageSync('lock')
再判断 是否在24小时内
const e = this.diff(lock)
const diff = (t) => {return(Data.now() -t) < 24*3600*1000 ?true:false}再去 this.setData({})
不会,让我给你完全写完?给钱麽