如何识别并监听微信小程序的息屏操作

如何识别并监听微信小程序的息屏操作

新人初来乍到,大二学生。在做小程序的过程中,遇到了关于onHide()函数状态识别(是否退出程序或者微信,还是仅仅息屏)的需求,百度一圈发现有这种需求的还不在少数,无奈问的多,做到的少,微信官方也没有提供onHide()。一筹莫展的时候,我决定另辟蹊径,成功地通过鸡贼的操作做到了关于息屏和离开页面的监听需求,希望能够帮到大家。

—————————————咸鱼的分割线———————————————
以上全是废话,不看也罢,直接上代码!
!!!!!(注意,以下代码目前只适用于iOS系统,安卓还不能实现)!!!!

如何判断是否离开小程序页面(包括退出微信)

众所周知,小程序官方提供了onHide函数,此函数用法如下:
如何识别并监听微信小程序的息屏操作_第1张图片
代码很简单但是缺点也很明显,微信官方给的onHide()的执行条件是“小程序从前台进入后台时触发”,解释一下,就是只要用户看不见这个页面,包括离开小程序,离开此页面,离开微信,熄灭屏幕……都会被调用。

所以onHide()其实在某些时候会变得很鸡肋,那该如何使onHide()变得灵活呢?

一个鸡贼的可行解以识别用户息屏操作

在最开始的时候,我也一筹莫展,但想要监听onHide()函数其实也不是非常难的事情。
还记不记得微信官方提供的wx.getScreenBrightness()函数?对,有人应该已经猜到我下一步要干什么了。
先放一段官方文档:
https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.getScreenBrightness.html
如何识别并监听微信小程序的息屏操作_第2张图片

——————————————————重点——————————————————
息屏其实是一个状态,它其实可以被理解成屏幕亮度逐渐熄灭至零。而亮屏其实可被理解成屏幕亮度从零逐渐变大到默认亮度。
之前很火的iOS睁眼壁纸其实就是这个原理,有兴趣的可以去试试。
所以之后的事情就变得非常简单了,只要将对屏幕亮度的监听函数写在onHide()函数里,就可以实现对监听事件的监听了。
(!!!再次提醒,安卓平台暂不支持该种操作,因为安卓系统息屏的时候屏幕亮度并不会至零,还是息屏前的值!!!)

息屏监听代码

/**
   * 生命周期函数--监听页面隐藏
   */
  // 当检测到系统为iOS时,开启离开提示功能
  onHide: function() {
     
    var that = this;
    wx.getSystemInfo({
     
      success: function(res) {
     
        that.setData({
     
          systemInfo: res,
        })
        if (res.platform == "ios") {
     
          wx.getScreenBrightness({
     
            success: function(res) {
     
              console.log("当前屏幕亮度:" + res.value)
              if (res.value !== 0) {
     
                $wuxDialog().alert({
     
                  resetOnClose: true,
                  maskClosable: false,
                  closable: false,
                  title: '失败',
                  content: "因为您在任务期间退出了该页面,此次任务失败",
                  onConfirm(e) {
     
                    wx.switchTab({
     
                      url: "../today/today"
                    })
                  },
                })
              }
            }
          });
        } else if (res.platform == "android") {
                 
         
        }
      }
    })
  },

总结

这是我第一次在CSDN发帖,还不是很熟练,语言上的小纰漏也请各位大爷们担待。希望我这个小透明能帮助到大家( ̄▽ ̄)~

你可能感兴趣的:(微信小程序,息屏监听,onHide函数,js)