Windows 桌面上的通知 API 没有问题。它甚至在 Mobile FF 上也没有问题。我发现似乎也支持 Chrome for Android 的文档,但它对我不起作用。我真的很想证明 API 可以在我当前 (2019) 版本的 Android 版 Chrome (70) 上为我工作。经过大量调查,我很容易看出为什么很多人的结果好坏参半。当我将上面的答案粘贴到准系统页面时,上面的答案对我根本不起作用,但我发现了原因。根据 Chrome 调试器,通知 API 只允许响应用户手势。这意味着您不能在文档加载时简单地调用通知。相反,您必须调用代码以响应用户交互,例如单击。
因此,这是一个准系统和完整的解决方案,证明您可以在当前(2019 年)适用于 Android 的 Chrome 上获得通知(注意:为了简洁起见,我使用了 jQuery):
<html>
<head>
<script type="text/javascript" src="libs/jquery/jquery-1.12.4.min.js"></script>
<script>
$( function()
{
navigator.serviceWorker.register('sw.js');
$( "#mynotify" ).click( function()
{
Notification.requestPermission().then( function( permission )
{
if ( permission != "granted" )
{
alert( "Notification failed!" );
return;
}
navigator.serviceWorker.ready.then( function( registration )
{
registration.showNotification( "Hello world", { body:"Here is the body!" } );
} );
} );
} );
} );
</script>
</head>
<body>
<input id="mynotify" type="button" value="Trigger Notification" />
</body>
</html>
总而言之,关于当前(2019 年)Android 版 Chrome 上的通知的重要信息:
- 必须使用 HTTPS
- 必须使用通知 API 来响应用户交互
- 必须使用通知 API 请求通知权限
- 必须使用 ServiceWorker API 来触发实际通知