HTML 5通知API



こんにちは、Habr。 この記事では、 HTML Notification APIについて説明します 。



Notification APIはどのような機能を提供しますか?



APIを使用すると、ブラウザを介して通知を送信できます。 各通知にアイコンを設定し、通知をグループ化し、通知のタイトルとテキストを指定できます。



ブラウザのサポート





通知コンストラクターがあるにも関わらず、Opera 15ベータ版は通知APIで動作しません。

モバイルプラットフォームでは、この技術は機能しません 。

webkitエンジンには、webkitNotificationsという形式の古い表記があります。



仕組み



作業サイクルは次のとおりです。

  1. 送信する許可を取得します。
  2. サイトのルールは固定されています。
  3. 通知を送信します。




最初の通知



通知を送信する前に、許可を確認することをお勧めします。



許可チェック


合計で3つの解像度のバリエーションがあります。





許可を確認するために、3つの方法を見つけました。



1. Notification.permissionプロパティの値を通じて。



switch ( Notification.permission.toLowerCase() ) { case "granted": //  break; case "denied": //  break; case "default": //  }
      
      





短所:





2.送信許可を取得しようとする

 var currentPermission; Notification.requestPermission( function(result) { currentPermission = result } );
      
      





短所:

状態がデフォルトの場合、ユーザーには通知を送信するサイトの要望に関する質問が表示されます。 ユーザーが何かを選択するまで、コールバック関数は機能せず、ステータスを受け取りません。



小さなヒント:

コールバックの遅延を使用して、requestPermissionを介してデフォルトの状態を決定できます。

 var permission, timer = setTimeout( function() { permission = "default" }, 500 ); Notification.requestPermission( function(state){ clearTimeout(timer); permission = state } );
      
      







3.通知を送信する

各通知にはイベントがあり、詳細は後ほどです。

 var notify = new Notification("test"); notify.onerror = function(){ console.log("permission state = default or denied"); };
      
      





短所:

2つのステータスで動作します。



許可を得る


Notification.requestPermissionはデフォルトの許可で起動され、選択した許可を引数として受け取る関数を取ります。

 Notification.requestPermission( newMessage ); function newMessage(permission) { if( permission != "granted" ) return false; var notify = new Notification("Thanks for letting notify you"); };
      
      







upd: kromxr は 、許可要求はイベント後にのみ発生することを通知し ます 。 たとえば、ユーザーは「システム通知を許可する」ボタンをクリックしました。



通知提出


それで通知に行きました:

 var mailNotification = new Notification(" ", { tag : "ache-mail", body : ",    ...", icon : "http://habrastorage.org/storage2/cf9/50b/e87/cf950be87f8c34e63c07217a009f1d17.jpg" });
      
      





そして結果:





私たちは理解しています:

「Andrey Chernyshev」-通知タイトル(必須)

さまざまなブラウザとOSでさまざまな方法でトリミングされます。15文字に制限することをお勧めします。



tag-通知をチェーンにリンクするタグ。

同じタグを持つ通知を交換可能にします。



body-通知コンテンツ。

さまざまなブラウザとOSでさまざまな方法でトリミングされます。20文字に制限することをお勧めします。



icon-通知アイコン。

OS Xのクロムとサファリでは表示されません。



通知イベント


通知には4つのイベントがあります。



onclick

ユーザーが通知本文をクリックしたときに発生します。 十字ボタンまたは閉じるボタンをクリックすると機能しません(mac os)。



ショー

通知が表示されるときに機能します。



onerror

許可なしに通知を表示しようとすると機能します(デフォルト、拒否)。



onclose

ウィンドウが閉じると発生します。

WindowsのChromeに問題があります。 closeイベントは、通知がクリックされたときに発生しません。



決定の変更



ブラウザでいつでも、通知ソリューションを削除/変更できます。

Chrome:設定-設定-詳細設定を表示-プライバシー-コンテンツ設定-通知。

Safari:設定-通知。

Firefox:ページを右クリック-ページ情報-権限-通知を表示します。



情報を視覚的に知覚するためのリンク



All Articles