- 什么是 PWA
- 为什么是渐进式
- App Shell 模型
- 介绍
- 传统“记住密码”功能实现
- 第三方登录凭证管理
- 凭证管理 API
- 账号密码凭证管理
- 搜索优化
- 消息推送介绍
- 如何吸引并留住用户
- 应用添加横幅
- 基本功能
- 改善应用体验
- manifest.json 简介
- 行为部分
- 视觉部分
- 通知
- 常用实现
- 离线 UX 注意事项
- 怎么使用 Service Worker
- 如何进行 Service Worker 调试
- Service Worker 简介
- Service Worker 生命周期
- 利用 indexedDB 保持应用状态的最佳实践
- Progressive Web App 的离线存储
- 网页存储概览
- 使用 RAIL 模型评估性能
- 使用 Lighthouse 审查 WebApp
- 代码规范与代码检查工具
- CSP 内容安全策略
- Web 安全
- 同源策略
- 典型的安全漏洞
- 使用 HTTPS
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
通知
本文将主要介绍 service worker
的功能之一:通知 (notification
),它允许服务器向用户提示一些信息,并根据用户不同的行为进行一些简单的处理。
通知比较常见的使用情景包括电商网站提醒用户一些关注商品的价格变化,或是在线聊天网站提醒用户收到了新消息等等。
如何使用?
使用 notification
本身非常简单,只需要一行代码,但在此之前需要一些准备工作。
- 检测浏览器兼容性,获取通知权限。
execute()
方法后续会有介绍。
window.addEventListener('load', () => {
if (!('serviceWorker' in navigator)) {
// Service Worker isn't supported on this browser, disable or hide UI.
return;
}
if (!('PushManager' in window)) {
// Push isn't supported on this browser, disable or hide UI.
return;
}
let promiseChain = new Promise((resolve, reject) => {
const permissionPromise = Notification.requestPermission(result => {
resolve(result);
});
if (permissionPromise) {
permissionPromise.then(resolve);
}
})
.then(result => {
if (result === 'granted') {
execute();
}
else {
console.log('no permission');
}
});
});
- 注册
service worker
,获取注册对象。(service-worker.js
暂时不需要任何代码支持,空白文件也可)
function registerServiceWorker() {
return navigator.serviceWorker.register('service-worker.js')
.then(registration => {
console.log('Service worker successfully registered.');
return registration;
})
.catch(err => {
console.error('Unable to register service worker.', err);
});
}
- 使用
showNotification
方法弹出通知。
function execute() {
registerServiceWorker().then(registration => {
registration.showNotification('Hello World!');
});
}
本文的其余部分将默认已经获得通知权限,并已经获得 registration
对象,前面两个步骤不再赘述了。
参数
showNotification
方法共有两个参数,分别为:
- title - 必填 字符串类型 表示通知的标题
- options - 选填 对象类型 集合众多配置项,可用项如下:
{
// 视觉相关
"body": "<String>",
"icon": "<URL String>",
"image": "<URL String>",
"badge": "<URL String>",
"vibrate": "<Array of Integers>",
"sound": "<URL String>",
"dir": "<String of 'auto' | 'ltr' | 'rtl'>",
// 行为相关
"tag": "<String>",
"data": "<Anything>",
"requireInteraction": "<boolean>",
"renotify": "<Boolean>",
"silent": "<Boolean>",
// 视觉行为均会影响
"actions": "<Array of Strings>",
// 定时发送时间戳
"timestamp": "<Long>"
}
RELAX!! 暂时我们还不需要关注这么多的配置项,下面会逐一讲述这些配置项及其产生的效果。
视觉部分
主要涉及通知的各类视觉相关的配置项,从而展现不同样式的通知,例如标题,内容,图标,图片等等。
行为部分
主要涉及通知的行为控制,例如点击通知,多个通知的折叠,通知弹出时的声音等等。
常用实现
主要介绍在实际使用场景中通知的常见实现方式,例如关闭通知,合并通知等等。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论