Next.js+Supabase+Cloud Run+iPhone Web Push:把新訂單即時送到鎖定畫面的正確架構
Threads 展示一個實用的新訂單通知流程:Next.js PWA 收集 iPhone Web Push 訂閱,Supabase 記錄訂單並以 Database Webhook 觸發 Cloud Run,後端用 VAPID 將訊息送至 browser push endpoint,iOS service worker 顯示原生通知。官方查證顯示 iPhone 需 iOS/iPadOS 16.4+、網站先加入主畫面、權限必須由使用者互動觸發。Cloud Run、Supabase、Next.js 都是可替換元件;Web Push 本身不需 Apple Developer Program,但免費層、資安、重試與鎖屏個資仍需設計。
PWA / Web Push / Order Operations
一則 Threads 實測展示:網站收到新訂單後,不必讓管理者一直開後台重新整理,也能像原生 App 一樣在 iPhone 鎖定畫面收到通知。組合是 Next.js+Supabase+Cloud Run+標準 Web Push;核心不是特定框架,而是一條「資料事件→可信後端→Push Service→Service Worker→系統通知」的事件驅動管線。
Threads 畫面證明了什麼?
附圖顯示 iPhone 鎖定畫面收到「新訂單」通知,含來源後台、訂單欄位與金額。這證明 browser-based Web Push 可以進入 iOS 的 Lock Screen/Notification Center;但畫面只證明 end-to-end notification 成功,不證明每個元件都不可替換,也不代表正式環境可以把完整訂單與個資直接放在鎖屏。
端到端架構
使用者 iPhone │ 加入主畫面、點「開啟通知」 ▼ Next.js PWA ── register service worker │ PushManager.subscribe(VAPID public key) │ 將 PushSubscription 儲存 ▼ Supabase subscriptions table
新訂單 INSERT ▼ Supabase Database Webhook (async / pg_net) ▼ Cloud Run webhook endpoint │ 驗證來源、idempotency、查訂單、組 payload │ web-push + VAPID private key ▼ Browser push endpoint / Apple Push Notification service ▼ PWA service worker receives push ▼ showNotification() → iPhone 鎖定畫面