Запрос уведомлений WebkitPermission не работает
Я пытаюсь реализовать поддержку собственных уведомлений на рабочем столе WebKit на своем сайте. Когда я пытаюсь попросить разрешение пользователя использовать уведомления, абсолютно ничего не происходит. Например, следующий HTML-код не запрашивает у Chrome разрешение на разрешение:
<html lang="en">
<head></head>
<body>
<h1>Testing</h1>
<script>
window.webkitNotifications.requestPermission();
</script>
</body>
</html>
Я знаю, что нет никакой проблемы с моей версией Chrome, потому что другие сайты (например, http://www.html5rocks.com/tutorials/notifications/quick/) работают отлично: я вижу как приглашение, так и последующие уведомления.
Ответы
Ответ 1
Проверьте спецификацию chromium api docs. Вы можете назвать это только как обратную связь с жестом/действием пользователя - щелчком мыши и т.д.
requestPermission Запросы, чтобы пользовательский агент запрашивает у пользователя разрешение показывать уведомления из сценариев. Этот метод следует только вызывать при работе с жестом пользователя; в других обстоятельств у него не будет эффект. Этот метод является асинхронным. Функция, предоставляемая в обратном вызове, будет вызывается, когда пользователь ответил на запрос разрешения. Если текущий уровень разрешения PERMISSION_DENIED, пользовательский агент может не предпринимать никаких действий в ответ на requestPermission.
ОБНОВЛЕНИЕ 2014-10-01. В Chrome 37, пользовательский жест был удален. Теперь можно будет запросить разрешение на отображение уведомлений в любой момент. Если вы хотите настроить таргетинг на более старые версии Chrome (например, в корпоративной среде), вам, вероятно, придется продолжать полагаться на события жестов пользователя.
Ответ 2
Для проверки уведомления о локальном файле (файл://) будет отображаться разрешение, но уведомление не будет работать на chrome.
Как работа вокруг, вы можете изменить
Настройка содержимого > Уведомление > Разрешить всем веб-сайтам показывать уведомления
Самый короткий код для уведомления
var notification = new Notification("YOUR MESSAGE");