根据规格:
(https://www.w3.org/TR/badging/#example-showing-ready-status-on-the-app-icon)
navigator.setAppBadge() 没有 arg 应该用不包含数字的徽章提醒用户,但事实并非如此。你可以直接从 service worker 的 web inspector 自己尝试(顺便说一句,当它安装在主页上时,为什么我不能得到 web app 的 web inspector?)。
为什么这不是规格?这是 Apple 的设计,还是 bug?
如果我在没有 arg 的情况下尝试它,当然是来自 service worker,它什么也不做。如果我输入一个数字:
navigator.setAppBadge(23)
...它工作正常。 (顺便说一句,我的 iPhone 13 mini 上似乎显示了高达 999,999 的数字而没有被剪裁。)这一切都是在尝试使用 Web Push API 为我的 Web 应用程序显示通知和徽章的背景下进行的,其唯一目的是告诉用户轮到游戏了。我即将意识到的是,由于您只能在“添加到主屏幕”的网站的服务工作者中处理推送事件,并且当网络应用程序被隐藏时,服务工作者似乎停止运行,整个练习是相当无用的。推送通知和徽章的主要用途是让用户在当前不使用 Web 应用程序时返回到 Web 应用程序——如果他们关注它,我可以让我自己的弹出通知出现。
所以我进一步的问题是,我是不是误解了什么?