首页 > 社交 > 科普中国

HTML5

常驻编辑 科普中国 2022-06-11 通知   最小化   权限   浏览器   桌面   窗口   参数   消息   方式   功能   用户

1.背景:
即时通讯、桌面端app开发、当用户和用户聊天,当发送聊天消息时,须要作收到消息通知,因为用到的技术栈是electron、它也有自己的通知模块、因为其他的原因暂时用不了 最后查到HTML5新增的 Notification API的通知功能。即便将浏览器窗口最小化,依然会收到消息通知、所以就先用它吧、后面再后话处理一下。
cEz拜客生活常识网

2.通知权限:
2.1 首先须要 看浏览器是否支持 Notification ,支持才有下文,不然就此止步;
2.2 经过 Notification.permission 检测用户是否容许通知:
cEz拜客生活常识网

// Notification.permission === 'granted' 用户容许
// Notification.permission === 'denied' 用户拒绝
// Notification.permission === 'denied' 不知道用户的选择,默认

if(Notification.permission === 'granted'){
    console.log('用户容许通知');
    instance_init(title, options);
}else if(Notification.permission === 'denied'){
    console.log('用户拒绝通知');
}else{
    console.log('用户还没选择,去向用户申请权限吧');
    Notification.requestPermission(function(status) {
    	if(status=='granted'){
    		console.log('用户容许通知');
    		instance_init(title, options);
    	}else if(status=='denied'){
    		console.log('用户拒绝通知');
    	}else{
    		console.log('用户还没选择');
    	}
    });
}

3. 主要用到的参数。其他参数了解:notification - Web API 接口参考 | MDNMDN Web DocsMDN logoMozilla logocEz拜客生活常识网

title:通知的标题
options:通知的设置选项(可选)。
	body:通知的内容。
	tag:表明通知的一个识别标签,相同tag时只会打开同一个通知窗口。
	icon:要在通知中显示的图标的URL。
	image:要在通知中显示的图像的URL。
	data:想要和通知关联的任务类型的数据。
	requireInteraction:通知保持有效不自动关闭,默认为false。

4.代码实现cEz拜客生活常识网

4.1原生html5方式cEz拜客生活常识网



	
		
		H5通知功能 
	

	
		
	

4.2 electron方式、调用即可cEz拜客生活常识网

export const getNotification = (cb?: () => void) => {
  if (Notification && (Notification.permission === "default" || Notification.permission === "denied")) {
    Notification.requestPermission((permission) => {
      if (permission === "granted") {
        cb && cb();
      }
    });
  } else {
    cb && cb();
  }
};
export const createNotification = (message: MessageItem, click?: (id: string, type: any) => void, tag?: string) => {
  if (Notification && document.hidden) {
    const title = message.fromName;
    const notification = new Notification(title, {
      dir: "auto",
      tag: tag ?? (message.id === "" ? message.conversationId : message.id),
      renotify: true,
      icon: icons,
      body: parseMessageType(message),
      requireInteraction: true,
    });
    const id = message.conversationId;
    notification.onclick = () => {
      click && click(id, message.type);
      notification.close();
    };
  }
};

相关阅读:

  • 婚礼提前三天才通知还去吗
  • 曝艺人行程图将不再通知,艺人行程成保密,粉丝喜忧掺半
  • 核酸检测24小时没有通知可以确定安全了吗
  • 手机通知栏在哪里(手机通知栏和状态栏的区别)
  • 面试让等通知一般多久(面试让等复试通知是什么意思)
  • 辞职要提前多久(没有提前一个月通知解除合同)
  • 婚礼提前多久通知(伴娘提前多久通知)
  • 面试后多久入职(面试一个月才通知入职)
  • 体检复查多久(体检有问题一般几天通知复查)
  • 面试后多久体检(面试后多久通知体检)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。