小程序
小游戏
企业微信
微信支付
扫描小程序码分享
现在的弹窗是每次打开都弹窗
如何设计成每天弹出一次
类似弹窗签到那种
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
})
},
//formID
getFormId:
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({})
不会,让我给你完全写完?
给钱麽