LoginSignup
ek9yama
@ek9yama

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

WebPushで認証情報を削除するタイミング

解決したいこと

自作Webシステムで、Webプッシュを実装しようとしています。
プッシュ通知を許可したユーザーが、受信をやめた際に、システム側で保持している認証情報を削除するタイミングが分かっていません。
どのタイミングで削除するものなのか、何を判断して削除するのかをご教示ください。

実装環境

PHPで、minishlink/web-push-phpライブラリを使って、PUSH通知を行っています。

現在想定している処理フロー

  1. 画面でPUSH通知を許可させ、認証情報をPOSTしユーザーと紐づけてDBに保持
  2. システム側から該当ユーザーにPUSH通知(バッチ処理等)
  3. PUSH通知の際に、結果コードが410(Gone)なら、解除されたとして認証情報をDBから削除

ソースコード部分抜粋

		foreach ($webPush->flush() as $report) {
			$endpoint = $report->getRequest()->getUri()->__toString();

			if ($report->isSuccess()) {
				$this->log("送信成功!", LOG_DEBUG);
			} else {
				$this->log("送信失敗...(" . $report->getResponse()->getStatusCode() . ")", LOG_DEBUG);

				// ステータスコードが410(Gone)なら購読解除とみなしDBから削除
				if ($report->getResponse()->getStatusCode() == 410) {
					// ここでDB削除処理
					$this->log("購読解除処理\n" . $report->getEndpoint(), LOG_DEBUG);

					// トークンをDBから削除するコールバック関数呼び出し
					$removeEndpointFunc($report->getEndpoint());
				}
			}
		}

自分で試したこと

PC版ChromeやAndroid版Chromeでは、上記想定通り、ブラウザで解除してからPUSH通知しようとすると410が返ってきて認証情報を削除することができました。
しかし、iOSでSafariからPWA化した画面でPUSH通知登録⇒通知受信まではできましたが、通知拒否にしてもPWAアイコン自体を削除しても送信結果が200となってしまい、削除する判定ができませんでした。

判定方法自体が間違っているでしょうか?

0

No Answers yet.

Your answer might help someone💌