GWT с настольными уведомлениями HTML5 (webkitNotifications) - PullRequest
1 голос
/ 01 ноября 2011

Я пытаюсь реализовать настольные уведомления 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 Ответ

3 голосов
/ 02 ноября 2011

Ну, все, что ты делаешь, выглядит хорошо для меня.Я попробовал пример и запустил его с 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.');
    }
}-*/;
...