美文网首页前端开发JsWeb前端之路
使用 Javascript 实现浏览器推送提醒功能

使用 Javascript 实现浏览器推送提醒功能

作者: ac68882199a1 | 来源:发表于2017-10-29 21:14 被阅读197次

    本篇文章内容简单,速读只需两三分钟,通过这两三分钟的时间你就可以给自己的网站实现推送提醒的功能

    Notification 类

    简单明了,这个类就是负责推送消息的,只要用户当前没有关闭页面,及时是在使用其他程序,浏览器也能够将消息推送给用户

    请求权限

    我们在手机上都收到过消息推送,在接收推送之前我们会先将消息推送权限开放给应用。在浏览器中也一样,在使用浏览器推送之前,需要先获取权限

    Notification.requestPermission().then(permission => {
        console.log(permission)
    })
    

    通过 requestPermission 方法可以为当前域名请求消息推送的权限,这个方法可以使用 Promise 语法来实现请求结果的处理。当然,你也可以使用回调的方式来实现

    回调的参数 permission 表示当前请求后用户的选择:允许推送 / 不允许推送,它的值也分别有两个 granted / denied,当我们发现用户不允许的推送的时候,就可以在回调中做出相应的提示,告诉用户可能会导致不能及时接收消息,并且告诉用户如果想要接收消息该如何操作等

    查看权限

    由于推送的权限是基于域名的,因此同一个网站在请求一次权限后,下一次打开时就不会再次请求,而是直接通过第一次的用户选择来决定网站是否能向用户推送

    因此我们就需要能够获取到当前网站的推送的状态,可以通过下面的这个属性来获取状态:

    Notification.permission
    

    permission 属性的值有三种:granted - 允许推送;denied - 拒绝推送;default - 还未申请权限

    当值为 default 时,我们就可以向用户请求推送的权限了

    发起一条推送

    const note = new Notification (title, opts)
    

    通过上面的方式可以声明一条推送,它有两个参数,第一个参数是消息的标题,这个是必填的一个参数;而通过第二个选填参数,我们则可以实现更多自定义的显示内容:

    第二个参数接收一个对象,它有一下几个属性:

    1. body:推送的主体内容
    2. tag:推送的标识,如果我们声明了多个 Notification,而这些推送的 tag 都相同,则只会推送一次
    3. icon:需要在推送中显示的图标的 URL
    4. data:推送的消息所带有的数据信息,当用户点击推送窗口时,可以通过这些信息为用户展示相应的内容
    5. requireInteraction:正常情况下,推送发出后若用户没有操作,几秒后就会消失,而将该属性设为 true 则可以让推送始终维持而不消失,默认值是 false

    当我们需要自定义推送显示时长的时候,可以通过最后一个属性将自动消失关闭,然后配合 note.close()setTimeout 方法人为控制推送时长

    点击推送事件

    既然已经可以成功的发起一条推送,那么该如何监听到用户是否点击了这个推送呢?很简单,通过 onclick 属性就可以实现

    note.onclick = () => {
        //在这里实现用户点击后的逻辑
    }
    

    其他

    需要注意的是,并不是所有浏览器都支持 Notification,所以在使用前需要先检测能否使用

    或许有的小伙伴会想,这个功能不错,这样在手机上也能实现网页消息推送了。然而很不幸的是,移动端浏览器几乎100%不支持 Notification :(

    扫码关注前端周记公众号

    相关文章

      网友评论

      本文标题:使用 Javascript 实现浏览器推送提醒功能

      本文链接:https://www.haomeiwen.com/subject/kahupxtx.html