TsgcWSAPIServer_WebPush › イベント › OnWebPushSubscription
ブラウザがPushManager.subscribe()を呼び出した後にSubscriptionエンドポイントにPOSTしたときに発生します。サーバー側で永続化するために、endpoint、p256dhキー、auth secretを受け取ります。
property OnWebPushSubscription: TsgcWSWebPushSubscription;
// TsgcWSWebPushSubscription = procedure(Sender: TObject; aSubscription: TsgcHTTP_API_WebPush_PushSubscription; var ResponseCode: Integer) of object
—
コンポーネントはすでに内部の Subscriptions リストに新しいサブスクリプションを保存しており、BroadcastNotification でアクセス可能になっています。このイベントを使用して、受信したサブスクリプションを独自のデータベースに保持したり、サーバー側の検証(認証、レート制限、重複検出)を適用したりします。ResponseCode をブラウザーに返す HTTP ステータスに設定します。成功時は 200/201 を返し、拒否するには 4xx を返します(例: ユーザーが承認されていない場合は 401)。
procedure TForm1.sgcWSAPIServer_WebPush1WebPushSubscription(Sender: TObject;
aSubscription: TsgcHTTP_API_WebPush_PushSubscription; var ResponseCode: Integer);
begin
SaveSubscriptionToDB(aSubscription.Endpoint,
aSubscription.PublicKey,
aSubscription.AuthSecret);
ResponseCode := 201;
end;