使用 Javascript 实现浏览器推送提醒功能的示例
作者:君未来我已老
本篇文章内容简单,速读只需两三分钟,通过这两三分钟的时间你就可以给自己的网站实现推送提醒的功能
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)
通过上面的方式可以声明一条推送,它有两个参数,第一个参数是消息的标题,这个是必填的一个参数;而通过第二个选填参数,我们则可以实现更多自定义的显示内容:
第二个参数接收一个对象,它有一下几个属性:
- body:推送的主体内容
- tag:推送的标识,如果我们声明了多个 Notification,而这些推送的 tag 都相同,则只会推送一次
- icon:需要在推送中显示的图标的 URL
- data:推送的消息所带有的数据信息,当用户点击推送窗口时,可以通过这些信息为用户展示相应的内容
- requireInteraction:正常情况下,推送发出后若用户没有操作,几秒后就会消失,而将该属性设为 true 则可以让推送始终维持而不消失,默认值是 false
当我们需要自定义推送显示时长的时候,可以通过最后一个属性将自动消失关闭,然后配合 note.close() 和 setTimeout 方法人为控制推送时长
点击推送事件
既然已经可以成功的发起一条推送,那么该如何监听到用户是否点击了这个推送呢?很简单,通过 onclick 属性就可以实现
note.onclick = () => { //在这里实现用户点击后的逻辑 }
其他
需要注意的是,并不是所有浏览器都支持 Notification,所以在使用前需要先检测能否使用
或许有的小伙伴会想,这个功能不错,这样在手机上也能实现网页消息推送了。然而很不幸的是,移动端浏览器几乎100%不支持 Notification :(
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。