#html #gwt #notifications #jsni #html5-notifications
#HTML #gwt #уведомления #jsni #html5-уведомления
Вопрос:
Я пытаюсь реализовать уведомления на рабочем столе HTML5 с помощью GWT. В настоящее время это не поддерживается библиотеками GWT, поэтому я использую собственный javascript из GWT (JSNI). Я думал, что это будет довольно просто, однако я не добился никакого успеха. Я использую Chrome и пробовал в режиме разработки и в развернутом приложении. Ниже приведен код, который я использую.
ПРИМЕЧАНИЕ: код javascript взят из http://playground.html5rocks.com/#simple_notifications и это прекрасно работало в Chrome.
У кого-нибудь это работает??
public native void requestPermission() /*-{
$wnd.webkitNotifications.requestPermission();
}-*/;
public native void createJSNotification(String iconUrl, String title, String body) /*-{
$wnd.webkitNotifications.createNotification(iconUrl, title, body).show();
}-*/;
Комментарии:
1. Не знаю, поможет ли это, но можете ли вы попробовать добавить requestPermission() в новый метод на вашей странице .html и вызвать этот новый метод из вашего приложения gwt?
Ответ №1:
Ну, все, что вы делаете, выглядит нормально для меня. Я попробовал пример и запустил его с помощью GWT, и он сработал. Единственное, что я заметил, это то, что может потребоваться некоторое время, пока уведомление не покажет, работаете ли вы в отладочном коде:
Вот мой код GWT:
public void onModuleLoad() {
{
Button bt_Permission = new Button("Request Permission");
bt_Permission.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
requestPermission();
}
});
RootPanel.get().add(bt_Permission);
}
{
Button bt_ShowNotification = new Button("Show Notification");
bt_ShowNotification.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
showNotification();
}
});
RootPanel.get().add(bt_ShowNotification);
}
}
public native void requestPermission() /*-{
$wnd.webkitNotifications.requestPermission();
}-*/;
public native void showNotification() /*-{
var text = 'You got a new email from someone@test.com'
if ($wnd.webkitNotifications.checkPermission() == 0) {
// note the show()
$wnd.webkitNotifications.createNotification('',
'Plain Text Notification', text).show();
} else {
alert('You have to click on "Set notification permissions for this page" first to be able to receive notifications.');
}
}-*/;
Комментарии:
1. Спасибо, Стефан. Я не запрашивал разрешения асинхронным способом. Это была моя проблема. Отлично работает.
2. у меня тоже была эта проблема, когда я отрицал допущение, а затем он никогда не спрашивал меня снова (даже когда я вызывал requestPermission();). Пришлось очистить мой браузер, чтобы снова задать запрос…