こんにちは。 エキサイト株式会社の三浦です。
最近WebPush周りを触っていたのですが、その中で「バグが起きた!?」と思ったら仕様だった、ということがありましたので、せっかくなので紹介したいと思います。
WebPushとは
WebPushは、ブラウザに対して行われるPush通知です。
アプリのPush通知のブラウザ版のようなもので、対応しているサイトで通知許可を行うことで通知が届くようになります。
例えばウーマンエキサイト( woman.excite.co.jp
)からのWebPushであれば、以下のように表示されます。
WebPushが謎のドメインから配信される!?
さて、ある日同僚から、「謎のドメインから通知が来ています」という連絡を受けました。
erecipe.woman.excite.co.jp
は弊社のE・レシピというサービスなので問題ないのですが、それと同時に excite.co.jp
というドメインから、全く同じ通知が届いています。
(なお厳密には連絡を受けたのは上記画像の通知ではありませんが、見やすさのために似た状況の別通知をスクショしています。)
弊社にはエキサイトニュース( https://www.excite.co.jp/
)というサービスがあるのでそちらから来たのか、とも思いましたが、そちらのチームに聞いてみると「その内容の通知は送信していない」とのこと。
最近WebPush周りを改修していたので、改修に関連したバグなのかとも思い調査していたところ、原因が判明しました。
それは、「ドメイン名の文字数制限」です。
WebPush通知のドメイン名表記には文字数制限がある
実はE・レシピのWebPushは、本番環境とStaging環境の両方に送られるのですが、そのStaging環境のURLは本番環境に比べて少し長めになっています。
そしてそのドメイン長がどうやら通知表記上の最大値を超えるようで、上記画像のようにドメイン名が省略されてしまうようでした。
つまり、上記画像の上の通知が本番環境の、下の通知がStaging環境の通知だった、ということです。
実際、報告してくれた同僚以外のPCでも再現し、無事原因確定となりました。
OSやブラウザ、PCではなくスマホを使うなどによって表示のルールは違う可能性があるのでご注意ください。
最後に
WebPushは、ブラウザの仕様に左右されるところがあったりして、想定外のことが起きやすいサービスだと思います。
この記事が、WebPush開発者の悩みを一つ解決できれば幸いです。