收藏
回答

小程序弹窗如何让它每日只弹一次

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 需求 客户端 6.7.3 2.5.0

现在的弹窗是每次打开都弹窗

如何设计成每天弹出一次

类似弹窗签到那种



最后一次编辑于  01-16
回答关注问题邀请回答
收藏

8 个回答

  •  向阳
     向阳
    01-17

    每日弹窗签到。建议还是利用服务器后端发来的数据做一下判断的好

    01-17
    赞同 2
    回复 2
    • 贰拾叁
      贰拾叁
      01-17

      就是为了获取fromID 没有实质性

      01-17
      回复
    • Charb
      Charb
      01-18

      同意,用户是可以修改设备的时间的,如果用系统时间来处理是有漏洞的

      01-18
      回复
  • 炜炎
    炜炎
    01-18

    如果业务需要精准,比如是优惠弹窗,每个人一天只能一次的话,为了避免用户的一些行为,比如删缓存,修改系统时间,恶意让弹窗无限触发,那么后台记录是最安全的;如果只是一些提示性或者不重要的,其实最直接还是缓存用时间戳算出来当天年月日,下次打开的年月日其中一个变了就弹窗

    01-18
    赞同 1
    回复
  • 杨泉
    杨泉
    01-17

    localstorage里面存一下上次打开时间

    判断一下不就是了

    01-17
    赞同 1
    回复
  • 拾忆
    拾忆
    01-16

    利用本地存储,做个类似cookie的缓存,判断下不就行么。

    01-16
    赞同 1
    回复 2
    • 贰拾叁
      贰拾叁
      01-16

      怎么写可以教教吗 或者给下相关文档

      01-16
      1
      回复
    • 拾忆
      拾忆
      01-17回复贰拾叁

      其他人都说了,基本做法都那样的。

      01-17
      回复
  • 刘祥波~小程序、app、公众号
    刘祥波~小程序、app、公众号
    01-18

    要多自己思考,不然永远只能做简单的东西。这问题还有这么多热心人回复太不可思议了

    01-18
    赞同
    回复 1
    • 贰拾叁
      贰拾叁
      01-18

      hhhh 谢谢教导

      01-18
      回复
  • Samuel
    Samuel
    01-18

    可以考虑一下用第三方的推送服务(www.xiaoshentui.com),不仅可以控制一天只弹一次,还可以控制一天对一个用户弹几次。还提供第三方模板消息推送服务,结合用户标签系统,做精细化推送。

    01-18
    赞同
    回复
  • 好哇你个狗东西
    好哇你个狗东西
    01-17

    本地存个时间戳,每次进入小程序页面时判断一下时间戳对应的日期是否是今日,如果是,不弹窗,如果不是今日,则弹窗,同时更新缓存。这么简单的逻辑都实现不了建议你还是打打基础吧

    01-17
    赞同
    回复
  • 海玄科技
    海玄科技
    01-17



    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

    }



    01-17
    赞同
    回复 3
    • 贰拾叁
      贰拾叁
      01-17
      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>


      01-17
      回复
    • 海玄科技
      海玄科技
      01-17回复贰拾叁

      也是智晓云用户哟

      01-17
      回复
    • 海玄科技
      海玄科技
      01-17回复海玄科技

      在 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({})


      不会,让我给你完全写完?


      给钱麽



      01-17
      1
      回复