1

我正在尝试使用 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();
}-*/;
4

1 回答 1

3

好吧,在我看来,你所做的一切都很好。我尝试了该示例并使用 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.');
    }
}-*/;
于 2011-11-02T10:59:02.863 回答