banseivlog

大器晩成型 - 仕事中の覚え書きや反省文を書く程度のブログです

Browser Push #1 - Chromeの通知表示制限に関して

ブラウザでPushを実装するときに気をつけること、気をつけたほうがいいことをこまめにログに残しておこうかなと思い立ったその①。

Chromeの通知表示制限に関して

同時多発テロ的にpushを配信しなければいいのだけども、同時に何件ものPushが来た時に何が起きるのかを想定しておかないとダメだと思ったので調査してみると以下のことがわかった。

  1. 通知は同一ドメイン上のtagごとの最新が最終的に表示される
  2. PCの画面高を超える数の通知が一度に表示されるとブラウザ再起動まで通知が表示されなくなる

NotificationAPIでいうとこの2つが大きな要素かなと思う。

1. 通知は同一ドメイン上のtagごとの最新が最終的に表示される

ここを見ると(英語理解できてないけど)

A notification is considered to be replaceable if there is a notification in the list of notifications whose tag is not the empty string and equals the notification’s tag, and whose origin is same origin with notification’s origin.

つまるところタグが指定された通知は、表示されている通知上に同一オリジンのtagがあれば置き換えて表示される。

ただこの時、置き換えられた通知は表示上消える。ただ getNotifications してみるとわかるがServiceWorker上にはキャッシュされているのでそこらへんも(どんどん溜まっていくので)気をつけて管理する必要があるかもしれない。

2. PCの画面高を超える数の通知が一度に表示されるとブラウザ再起動まで通知が表示されなくなる

PCの高さを超える量の通知が表示されるとすべての通知が消えて、エラーも吐かずにただただ通知が表示されないという現象が起きる。

この後通知はブラウザ再起動※2まで表示されなくなっちゃった残念(しかも他ドメインの通知も表示されなくなるという鬼)


追記 2016/06/17

tagで上書きされた通知は、notificaiton.close()されるまではキャッシュされる。ここで再表示させたい場合はrenotifyオプションをつける必要がある(>=50)


※1 Notifications API Standard https://notifications.spec.whatwg.org/
※2 ブラウザ再起動までって言ったけどあまり調査はしきれていない