我正在尝试使用GWT实现HTML5桌面通知。目前GWT库不支持此功能,因此我在GWT(JSNI)中使用本机javascript。我认为这将是相当直接的,但我没有任何成功。我正在使用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();
}-*/;
答案 0 :(得分:3)
嗯,你做的事情看起来很好。我尝试了这个例子并使用GWT运行它并且它有效。我注意到的唯一事情是,如果你在debugg代码中运行,通知显示可能需要一些时间:
这是我的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.');
}
}-*/;