diff --git a/src/app/api/m/push/subscribe/route.ts b/src/app/api/m/push/subscribe/route.ts index c86a7b7..e99b1f3 100644 --- a/src/app/api/m/push/subscribe/route.ts +++ b/src/app/api/m/push/subscribe/route.ts @@ -33,13 +33,10 @@ export async function POST(req: NextRequest) { [createObjectId(), userId, endpoint, p256dh, auth, userAgent] ); - // 같은 사용자의 이전 구독은 정리 — 마지막에 구독한 기기/앱 하나만 유지. - // 브라우저(삼성 인터넷 등)로 먼저 구독해 둔 게 남아 앱이 아닌 브라우저 알림으로 - // 오던 문제 방지. (앱에서 다시 켜면 옛 브라우저 구독이 제거됨) - await pool.query( - `DELETE FROM momo_push_subscriptions WHERE user_id = $1 AND endpoint <> $2`, - [userId, endpoint] - ).catch(() => {}); + // 옛 정책(같은 user_id 마지막 1개만 유지)은 제거 — 한 사용자가 PC Chrome / + // 모바일 Chrome / 삼성 인터넷 / 모모유통 앱 등 여러 채널 동시 구독을 허용. + // 만료(404/410)된 endpoint 는 sendPush 내부에서 자동 정리되므로 stale 누적 없음. + // (참고: User-Agent 가 동일하고 endpoint 만 갱신된 경우는 위의 UPSERT 가 갱신 처리) // 구독 직후 환영 푸시 — 전체 파이프라인(서버→푸시서비스→기기) 동작 즉시 확인용 const welcome = await sendPush(