我发现本教程声称可以使用以下 HTML5 API 的组合来完成:
- 通知 API
- 服务工作者 API
- 推送 API
显然,这需要所有 3 个才能工作,但是当我在 caniuse 中搜索它们时,似乎没有任何一个移动浏览器支持所有三个 API。还有其他方法可以解决这个问题吗?
我发现本教程声称可以使用以下 HTML5 API 的组合来完成:
显然,这需要所有 3 个才能工作,但是当我在 caniuse 中搜索它们时,似乎没有任何一个移动浏览器支持所有三个 API。还有其他方法可以解决这个问题吗?
没错,您需要结合使用这三个 API 才能向移动设备发送异地(类似应用程序的)通知。目前唯一支持它们的浏览器是 Android 上的 Chrome。
如果您使用Pushpad之类的服务(我是创始人),将推送通知添加到您的 Web 应用程序不会花费太多时间,因此您可能会开始支持 Android,当其他设备支持 Web 推送时,您将获得它们免费,无需更改您的代码。
caniuse.com上的信息不准确。在Service Worker Cookbook with Chrome for Android v50 中尝试这个简单的 PUSH 演示,您将看到它的工作原理。
无论如何回答您的问题,如果您正在使用纯 Web 应用程序,则显示本机通知的唯一方法是通过 Web Notifications API,然后您可以通过 websockets 模拟推送通知,服务器发送事件并使用NavigatorOnLine API在在线时重新连接但是您需要用户保持浏览器运行。
请注意,能够使用 Push API 的浏览器至少部分暗示了对 Service Worker 的支持。