查看: 3  |  回复: 0
  探索 Badging API:为您的 Web 应用增加徽章通知功能
楼主
发表于 今天 12:08

引言:随着用户对 Web 应用程序需求的不断增长,开发人员需要一种简洁有效的方式来通知用户新活动或未读内容。传统的通知方式有时可能过于打扰用户,而徽章(Badge)则提供了一种不易分散注意力且用户友好的解决方案。本文将详细介绍 Badging API,它允许开发人员为安装的 Web 应用程序设置徽章。

什么是 Badging API?

Badging API 是一种允许 Web 应用程序在其图标上设置徽章的 API。这些徽章通常显示在操作系统的任务栏、主屏幕或应用程序坞中的应用图标旁。与显示通知不同的是,徽章不会干扰用户,因此无须用户许可即可更新。

徽章通常用于指示需要用户注意的新活动或少量信息,例如未读消息计数。常见用途包括:

聊天、电子邮件和社交应用通知新消息或未读内容数。

效率应用指示后台任务完成。

游戏通知玩家需要采取行动。

Badging API 的支持情况

目前,Badging API 支持 Windows 和 macOS 平台,并在 Chrome 81 和 Edge 81 及更高版本可用。未来版本将支持 ChromeOS,而 Android 上则通过其他机制显示徽章。

如何使用 Badging API

要使用 Badging API,您的 Web 应用需要符合安装要求,并且用户需将应用添加到主屏幕。Badging API 提供了两个主要方法:

setAppBadge(contents): 设置应用徽章,可以传递一个数字值。

clearAppBadge(): 清除应用徽章。

以下是一些代码示例,展示了如何设置和清除徽章:

// 设置徽章,未读消息数为12navigator.setAppBadge(12).catch((error) => {
 console.error("设置徽章失败", error);});// 清除徽章navigator.clearAppBadge().catch((error) => {
 console.error("清除徽章失败", error);});

机制与细节

设置徽章
setAppBadge 方法接收一个可选的数字参数。如果未传递任何参数,系统会显示一个表示状态的标识。传递的数字会显示在徽章中,可能被本地化和格式化。例如,较大的数字可能显示为“99+”。

清除徽章
调用 clearAppBadge 方法将清除徽章,恢复到无状态。

在 Service Worker 中使用
由于 Service Worker 可以在后台运行,我们可以在其中调用 Badging API。例如,通过推送 API,服务器可以发送消息到 Service Worker,更新徽章状态。

// Push API 接收推送消息时更新徽章self.addEventListener('push', event => {
 const unreadCount = event.data.json().unreadCount;
 self.registration.setAppBadge(unreadCount).catch(error => {
   console.error("更新徽章失败", error);
 });});

实用示例

未读邮件计数:

async function updateMailBadge() {
 // 检查 API 是否支持  if (!navigator.setAppBadge) return;

 const unreadCount = await getUnreadMailCount();
 try {
   await navigator.setAppBadge(unreadCount);
 } catch (e) {
   console.warn("设置徽章失败", e);
 }}

玩家轮到行动:

async function showPlayerTurn(playerTurnId) {
 if (playerTurnId === localPlayerId)
   await navigator.setAppBadge();
 else
   await navigator.clearAppBadge();}

安全与隐私考量

Badging API 的设计考虑了隐私和安全。由于该 API 仅提供写操作,并没有读取先前设置的徽章值的功能,因此减少了被滥用为存储或指纹机制的风险。操作系统或用户代理可能会清除徽章,以符合系统一致性或其他需求。

总结

Badging API 为 Web 开发人员提供了一种简洁高效的方式来通知用户应用状态的变化,而不会过多打扰到用户。通过巧妙地使用这个 API,可以显著提升用户体验,同时保持应用与用户之间的良好互动关系。

您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2026 MaNongKu.com