收藏
回答

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

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

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

如何设计成每天弹出一次

类似弹窗签到那种



回答关注问题邀请回答
收藏

8 个回答

  •  向阳
     向阳
    2019-01-17

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

    2019-01-17
    有用 2
    回复 2
    • 2019-01-17

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

      2019-01-17
      回复
    • Charb
      Charb
      2019-01-18

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

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

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

    2019-01-18
    有用 1
    回复
  • Lemon
    Lemon
    2019-01-18

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

    2019-01-18
    有用 1
    回复
  • 杨泉
    杨泉
    2019-01-17

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

    判断一下不就是了

    2019-01-17
    有用 1
    回复
  • 拾忆
    拾忆
    2019-01-16

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

    2019-01-16
    有用 1
    回复 2
    • 2019-01-16

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

      2019-01-16
      1
      回复
    • 拾忆
      拾忆
      2019-01-17回复

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

      2019-01-17
      回复
  • 神经蛙
    神经蛙
    2019-01-18

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

    2019-01-18
    有用
    回复 1
    • 2019-01-18

      hhhh 谢谢教导

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

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

    2019-01-17
    有用
    回复
  • 海玄科技
    海玄科技
    2019-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

    }



    2019-01-17
    有用
    回复 3
    • 2019-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>


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

      也是智晓云用户哟

      2019-01-17
      回复
    • 海玄科技
      海玄科技
      2019-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({})


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


      给钱麽



      2019-01-17
      1
      回复
登录 后发表内容