最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 桌面与Web的信使:Notification API(附Vue3中使用)

    正文概述 掘金(someCat)   2020-12-15   876

    引言

    这是在初次进入Facebook的时候Chrome在地址栏弹出的提示?

    桌面与Web的信使:Notification API(附Vue3中使用)

    当你点击了“允许”后,即使你最小化了标签或者切到其他标签去了,朋友发给你的聊天信息也会通过桌面级的通知告诉你,FB还使用了 FCM,即使你关闭了浏览器,依旧能够调起通知,有时间再研究研究。

    桌面与Web的信使:Notification API(附Vue3中使用)

    话再说回来,假如我们没有使用这玩意,是如何通知用户的呢??

    桌面与Web的信使:Notification API(附Vue3中使用)

    通过动态地改变document.title提醒,然而当用户已经最小化去看剧斗地主了,这东西也就形同虚设了。

    什么是Notification API

    在MCN中是这样解释的?

    简单翻译下就是,Notifications API允许Web端在用户桌面系统中展示通知。这个通知是桌面级的,因此即使用户切换了选项卡或移至其他应用程序也会显示。该API旨在与不同平台上的现有通知系统兼容。

    经过简单测试,发现在Chrome、FF、Safari上都能正常使用,除了样式不太一样。截至目前兼容性?

    桌面与Web的信使:Notification API(附Vue3中使用)

    如何使用

    如果浏览器支持的话,window下会有个Notification构造函数,函数展开后?

    requestPermission()

    桌面级的通知就像看电影突然蹦出个广告一样,可能会扰民,所以需要提前向用户索要(ball ball)通知的权限?

    Notification.requestPermission()
    // 会返回一个Promise对象,所以我们在实际过程中可以?
    Notification.requestPermission().then(permission => {
        console.log(permission) // granted, denied, 或default.
    })
    

    granted表示允许通知,denied表示被拒绝了,default是个默认状态,跟被拒绝了的效果没差。

    permission 静态属性

    Notification.permission 值的含义同上。

    实例属性

    new Notification(title, {
      dir: '', // 文字的方向;它的值可以是 auto(自动), ltr(从左到右), or rtl(从右到左)
      lang: '', // 指定通知中所使用的语言。这个字符串必须在 BCP 47 language tag 文档中是有效的
      body: '', // 通知内容
      tag: '', // 赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。
      icon: '', // 一个图片的URL,将被用于显示通知的图标。
      data: '',// 任意你想放进去数据。
    })
    

    桌面与Web的信使:Notification API(附Vue3中使用)

    Event

    Notification.onclick处理 click 事件的处理。每当用户点击通知时被触发。

    Notification.onshow处理 show 事件的处理。当通知显示的时候被触发。

    Notification.onerror处理 error 事件的处理。每当通知遇到错误时被触发。

    Notification.onclose处理 close 事件的处理。当用户关闭通知时被触发。

    完整示例

    function notifyMe() {
      // 先检查浏览器是否支持
      if (!("Notification" in window)) {
        alert("This browser does not support desktop notification");
      }
      // 检查用户是否同意接受通知
      else if (Notification.permission === "granted") {
        // If it's okay let's create a notification
        var notification = new Notification("Hi there!");
      }
      // 否则我们需要向用户获取权限
      else if (Notification.permission !== "denied") {
        Notification.requestPermission().then(function (permission) {
          // 如果用户接受权限,我们就可以发起一条消息
          if (permission === "granted") {
             var notification = new Notification("Hi there!");
          }
        });
      }
      
      // 最后,如果执行到这里,说明用户已经拒绝对相关通知进行授权
      // 出于尊重,我们不应该再打扰他们了
    }
    

    在Vue中使用

    主要思路就是把需要用的方法挂载到Vue原型上,封装方法使其更符合中国人的习惯,并兼容了⭐Vue3⭐!

    NPM

    已推送至NPM?www.npmjs.com/package/nat…,欢迎提Issue点Star!


    起源地下载网 » 桌面与Web的信使:Notification API(附Vue3中使用)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元