Rails とhttps://github.com/zaru/webpush gem を使用しており、このガイドに従って構成しました https://rossta.net/blog/web-push-notifications-from-rails.html
ServiceWorker を登録してサブスクリプションを取得することができました。このようにコントローラーに保存します
endpoint = params[:subscription][:endpoint]
p256dh = params[:subscription][:keys][:p256dh]
auth = params[:subscription][:keys][:auth]
current_user.gcm_endpoint = endpoint
current_user.gcm_p256dh = p256dh
current_user.gcm_auth = auth
後で、次のようなメッセージを送信します。
message = {
title: "Title",
body: "This is a test notification",
icon: "images/my-128.png"
}
Webpush.payload_send(
endpoint: current_user.gcm_endpoint,
message: JSON.generate(message),
p256dh: current_user.gcm_p256dh,
auth: current_user.gcm_auth,
ttl: 600,
api_key: "<MY API KEY>"
)
Google コンソールでアカウントを設定して有効にしました。GCM API を有効にして、正しいキーを追加しました。しかし、何をしても、この 400 エラー コードが表示されます。また、Google コンソールには統計情報がありません。まるで API 呼び出しが行われていないかのようです。