こんにちは。 エキサイト株式会社の三浦です。
Webブラウザ用Push通知であるWebPushを使う上でFCMを使っている方は多いと思いますが、最近(2023年6月)特定の条件下でWebPushが送れなくなる問題が発生したので、今回はその共有をさせていただきます。
WebPushとFCM
Push通知といえばアプリだと考えらがちですが、そのWebブラウザ版である「WebPush」も、アプリのPush通知と同じくユーザのエンゲージメントに有効な手段の一つです。
このWebPushを送信する手段として有名なのが、 Firebase Cloud Messaging (FCM)
というFirebaseのサービスを使う方法でしょう。
Firebase Cloud Messaging(FCM)は、メッセージを無料で確実に送信するためのクロスプラットフォーム メッセージング ソリューションです。
さて、FCMでWebPushを送信する場合、以下の3つの方法があります。
- FCM HTTP v1 API
- 以前の HTTP プロトコル
- 「FCM HTTP v1 API」が出る前に使われていた方法
- 以前の XMPP サーバー プロトコル
- 「FCM HTTP v1 API」が出る前に使われていた方法
現在の推奨は「FCM HTTP v1 API」なので新しく開発する場合はこれを使うでしょうが、昔にWebPushの機構を開発していた場合、「以前の HTTP プロトコル」を使っている場合もあると思います。
そして、この「以前の HTTP プロトコル」ですが、現在ほとんど使えない状況である可能性があります。
「以前の HTTP プロトコル」ではWebPushを送れないかもしれない
「以前の HTTP プロトコル」を使ってChromeへWebPushを送信すると、以下のエラーが発生します。
401 Unauthorized: "Sender is using deprecated Authentication scheme: unauthenticated
"
「廃止された認証方法を使っているため認証できません」という意味で、「以前の HTTP プロトコル」での認証が通らなくなったものと推測されます。
最近(2023年6月)では、ChromeへのWebPush送信はほぼこのエラーになってしまい、まともにWebPushを送ることができないようです。
最後に
「以前の HTTP プロトコル」は「FCM HTTP v1 API」に移行することを前々から推奨されていましたが、いよいよその時が来てしまったということかもしれません。
幸い移行手順はドキュメントに存在しているので、こちらを参考にすると良いのではないでしょうか。
外部のサービスに頼っているとどうしても起きてしまう問題ですが、基本的には「FCM HTTP v1 API」のほうが色々とメリットが大きいようなので、よい機会として移行を検討してみてください。