跳转到内容
supastack
浏览文档

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/mobile/notifications.md (or send Accept: text/markdown).

通知与推送

应用内收件箱、渠道偏好,以及 Expo 推送管线。

询问本指南
打开方式

收件箱与渠道偏好

通知标签页列出 GET /api/notifications 返回的工作区通知,并对通知 id 发起 PATCH 标记已读。“设置 → 通知”编辑共享的渠道偏好 —— emailBilling、emailInvites、inAppProduct —— 通过同一路由偏好视图的 GET 与 PATCH 完成,正是 Web 应用使用的契约。未读数量会显示在首页。

为推送注册设备

登录时 —— 以及每次切换工作区时 —— 应用会请求通知权限、从应用配置解析 EAS 项目 id、获取 Expo 推送 token,并提交到 POST /api/mobile/push-tokens。Android 在默认渠道上以高重要性注册。

注册结果报告为 registered、permission_denied 或 unavailable,且绝不抛错 —— 推送永远不会阻塞登录。Expo Go 与模拟器无法完成注册,真实覆盖需要开发构建。token 保存在 SecureStore(supastack.push.token)中,以便退出登录时在会话 Cookie 销毁前先将其注销。

服务端投递与回执

GET 列出成员的 token,POST 在当前工作区下 upsert token,DELETE 撤销 —— 列表与撤销保持用户级作用域,没有工作区的账户也能清理。每个用户最多保留二十个设备 token;多注册一个会修剪最旧的那个。

每条应用内工作区通知也会尽力推送:服务器以一百条为一批调用 Expo 推送 API,记录 ok 票据,并立即清理 DeviceNotRegistered 的 token。可选的服务端专用 EXPO_ACCESS_TOKEN 会为这些调用附加 Bearer 头,且绝不写入日志。一个平台计划任务每三十分钟核对一次回执并清扫过期票据 —— 它与其他平台计划任务共用同一个调度 tick 驱动。

# Optional server-only token for authenticated Expo push sends:
# apps/web/.env.local
EXPO_ACCESS_TOKEN=

点击通知打开应用路由

发送方把 Web 路径附在 data.href 上。应用会校验它 —— 只允许以斜杠开头的绝对路径、限制长度、禁止路径穿越 —— 并把已知路径映射为原生路由,例如 /billing 到 /settings/billing、/dashboard 到 /home。未登录时到达的点击会先缓冲,登录完成后再回放。

验证与排障

在开发构建上测试:授予与拒绝权限、在“设置 → 通知”中切换推送 —— 界面会把此设备报告为 enabled、disabled 或 denied —— 并分别以冷态与热态点击通知。如果关闭时报错,说明服务端注销失败,设备会保持注册状态直到成功为止。

常见问题

14 个问题

supastack 是什么?

supastack 是用于构建 AI 驱动 SaaS 产品的模块化基础。它把通用基础设施整合在一起,让你专注于产品专属的功能。

它支持 Web 和移动端吗?

支持。supastack 包含 Next.js 与 Expo 应用,作为 Web 与移动端体验的起点。

包含哪些认证方式?

Better Auth 覆盖邮箱/密码、OTP 与社交登录。个人工作区随账户一起开通,产品记录从第一天起就有边界。

AI 是如何支持的?

supastack 包含可配置的多供应商 AI、用量追踪、预算,以及加密的自带密钥(BYOK)支持。

订阅如何处理?

对于基于该套件构建的产品,Stripe 计费、订阅与权限构成付费访问的基础。供应商密钥仅存于服务端。

我的产品专属代码放在哪里?

产品专属功能保留在独立的代码库中,产品通过配置接入 supastack 的基础模块。

supastack 如何定价?

套件为一次性购买、终身更新:单栈 249 美元(Next.js(Web)、Expo(iOS 与 Android)、Tauri(macOS 与 Windows 桌面)仓库任选其一),双栈 398 美元(任选两个仓库),或完整套装 399 美元(全部三个仓库与完整 monorepo),每个额外开发者席位 75 美元。套件本身没有订阅。本站结账后通过邮件发送许可证密钥,仓库访问通过 GitHub 邀请授予。

工作区如何界定我的数据?

用户记录按 workspaceId 划定边界。身份、权限、AI 用量、计费事件与审计条目都留在个人工作区边界内。

后台任务如何工作?

Trigger.dev 是明确的任务运行时。JobRunner 契约只承诺 enqueue、status 与 cancel——工作流语义保持 Trigger.dev 专有且显式。

邮件与营销触达有何不同?

事务性邮件覆盖产品工作流,如任务完成通知。冷触达与营销活动属于产品自身的范畴,不在本套件的邮件模块内。

移动端购买如何运作?

移动端已支持 RevenueCat 原生购买和恢复购买,访问权限由服务端验证。发布前需配置商店账户并完成设备测试。Web 计费保持独立。

AI 供应商密钥存放在哪里?

自带密钥凭证经过加密且仅存于服务端。密钥在日志中被脱敏;用量与预算在工作区级别保持可见。

结账支持哪些付款方式?

Stripe 托管结账接受银行卡,在 Stripe 账户启用后还可提供支付宝与微信支付——方便中国买家。钱包授权为异步确认,付款完成后许可证页面会立即更新。

我能申请退款吗?

获得代码仓库访问权限后,supastack 将永久归你所有,因此无法退款。但请放心,你将获得包含终身更新的完整源代码,可为你自己或客户构建并发布无限数量的产品。你只需注意不能转卖代码,也不能将仓库作为启动模板二次分发。

CN
主题