UNPKG

use-on-demand

Version:
99 lines 4.5 kB
/** * 参考资料: * H5 notification浏览器桌面通知 - 掘金 - https://juejin.im/post/5c6df433f265da2de80f5eda */ // interface NotificationOption { // dir: string | 'auto'; // 文字方向 // body: string; // 通知消息主题 // requireInteraction: boolean; // 不自动关闭通知 // icon: string; // 通知的图标,可以用url网址 // } // TODO ↑,官方已有一个定义。只是未挂载到 window对象上面。 var xX_BrowserNativeNotification_Helper = /** @class */ (function () { function xX_BrowserNativeNotification_Helper() { } Object.defineProperty(xX_BrowserNativeNotification_Helper, "__demoOptions", { /** * 测试用的选项 */ // 每次,都返回最新的。 get: function () { return { dir: 'auto', // body: '通知:OBKoro1评论了你的朋友圈', // 通知主体 // TIP 此处,似乎最多四行内容。 body: "\u73B0\u5728\uFF0C\u5C06\u4F1A\u751F\u6210\u4E00\u5F20\u56FE\u8868\uFF0C\u4F9B\u60A8\u5C55\u793A\u3002\n\u7B2C\u4E00\u884C\n\u7B2C\u4E8C\u884C\n\u7B2C\u4E09\u884C\n\u7B2C\u56DB\u884C\n\u7B2C\u4E94\u884C", requireInteraction: true, // icon: 'https://upload-images.jianshu.io/upload_images/5245297-818e624b75271127.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240', icon: 'https://goss4.vcg.com/creative/vcg/800/version23/VCG21gic19273071.jpg', silent: true, }; }, enumerable: false, configurable: true }); xX_BrowserNativeNotification_Helper.simpleNotify = function (title, options) { var _this = this; var notifyWhenPermitted = function () { var notification = new Notification(title, options); // 显示通知 // TODO 插入通知的处理事件。 _this.bindEvts(notification); }; // 先检查浏览器是否支持 if (!window.Notification) { console.log('浏览器不支持通知'); } else { // 检查用户曾经是否同意接受通知 if (Notification.permission === 'granted') { notifyWhenPermitted(); } else if (Notification.permission === 'default') { // 用户还未选择,可以询问用户是否同意发送通知 Notification.requestPermission().then(function (permission) { if (permission === 'granted') { console.log('用户同意授权'); notifyWhenPermitted(); } else if (permission === 'default') { console.warn('用户关闭授权 未刷新页面之前 可以再次请求授权'); } else { // denied console.log('用户拒绝授权 不能显示通知'); } }); } else { // denied 用户拒绝 console.log('用户曾经拒绝显示通知'); } } }; xX_BrowserNativeNotification_Helper.bindEvts = function (notify) { console.log('通知标题(仅可读):', notify.title); console.log('通知内容(仅可读):', notify.body); console.log('通知图标(仅可读):', notify.icon); // 点击通知框本身 notify.onclick = function (e) { console.log('用户点击了通知:', e); }; notify.onerror = function (e) { console.error('通知显示异常,如用户之前拒绝了权限:', e); }; // // 一显示就触发 notify.onshow = function (e) { console.log('通知显示了:', e); }; // 点击【→】按钮( 注意区别:点击【关闭】按钮,不会触发这个) notify.onclose = function (e) { console.log('通知关闭了:', e); }; }; return xX_BrowserNativeNotification_Helper; }()); export { xX_BrowserNativeNotification_Helper }; // 使用示范: // simpleNotify('这是通知的标题', options); //# sourceMappingURL=native-notification.js.map