また、ユーザーがログアウトすると、すべてのプッシュサブスクリプションが削除されるようです。そのため、ユーザーが複数のデバイス(スマートフォン、ブラウザ、タブレット)でログインしている場合、そのうちの1つのデバイス/セッションからログアウトすると、他のデバイスのプッシュサブスクリプションも削除されて通知が届かなくなります。
これは、更新時にどのサブスクリプションを置換する必要があるか、およびログアウト時にどのサブスクリプションを削除すべきかを把握することに関連しているため、触れておきます。
また、ユーザーがログアウトすると、すべてのプッシュサブスクリプションが削除されるようです。そのため、ユーザーが複数のデバイス(スマートフォン、ブラウザ、タブレット)でログインしている場合、そのうちの1つのデバイス/セッションからログアウトすると、他のデバイスのプッシュサブスクリプションも削除されて通知が届かなくなります。
これは、更新時にどのサブスクリプションを置換する必要があるか、およびログアウト時にどのサブスクリプションを削除すべきかを把握することに関連しているため、触れておきます。
ええと、今日Metaからログアウトされて、ログインしたらあなたの投稿のプッシュ通知が来ましたね… ユーザーがログインを始めた場合のコードパスでのみ表示されるのでしょうか🤔
ユーザーがフォーラムに戻ってきたり(またはログインしたり)すると、ブラウザのプッシュサブスクリプションが再送信され、再作成されます。しかし、ログアウトした場合はサブスクリプションが削除され、そのユーザーがそのデバイスからフォーラムにアクセスするまでプッシュ通知は配信されません。
これは、ログイン後にプッシュ通知を受け取ったとおっしゃっている内容と矛盾しません。
コード参照:
なるほど、まさに私が疑っていた通りですね。
見つけたね!これは絶対に修正しないといけないね!
問題は、現在、特定のサブスクリプションがどのデバイスに紐付いているかを保存していないことだ…
Push API には、プッシュサブスクリプションを無効化するための unsubscribe 関数が存在します:
ログアウト時にこれを呼び出す(クライアントサイドで)ことで、サーバー上のそのサブスクリプションを無効化し、他のサブスクリプションには影響を与えません。
実際、クライアントには「ライブ通知」設定でこれを行う unsubscribePushNotification 関数が既に存在します。解決策として、ライブ通知が有効な場合にログアウト時にこれをクライアントサイドで呼び出すことが考えられます。サーバーから単に削除するのではなく、クライアントサイドのサブスクリプションキーを無効化するのが良いプラクティスでしょう。
つまり、修正は以下の 2 段階で行うことができます:
このトピックは 4 日後に自動的に閉鎖されました。新しい返信は許可されていません。