コンテンツへスキップ
supastack
ドキュメントを閲覧
モバイルExpo

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 /ja/docs/mobile/notifications.md (or send Accept: text/markdown).

通知とプッシュ

アプリ内の受信トレイ、チャネル設定、Expo プッシュパイプライン。

このガイドについて質問
開くアプリ

受信トレイとチャネル設定

通知タブは GET /api/notifications からワークスペースの通知を一覧表示し、通知 ID への PATCH で既読にします。「設定 → 通知」は、同じルートの preferences ビューへの GET と PATCH を通じて、共有のチャネル設定 — emailBilling、emailInvites、inAppProduct — を編集します。これは Web アプリが使うのとまったく同じコントラクトです。未読数はホーム画面に表示されます。

プッシュ用にデバイスを登録

サインイン時、およびワークスペースを切り替えるたびに、アプリは通知の許可を求め、アプリ設定から EAS プロジェクト ID を解決し、Expo プッシュトークンを取得して、POST /api/mobile/push-tokens に送信します。Android はデフォルトチャネルに高い重要度で登録されます。

登録は registered、permission_denied、unavailable のいずれかを報告し、例外は投げません — サインインがプッシュでブロックされることはありません。Expo Go とシミュレーターでは登録を完了できないため、実際のカバレッジには開発ビルドが必要です。トークンは SecureStore(supastack.push.token)に保持されるため、サインアウト時にセッション Cookie が破棄される前に登録解除できます。

サーバー側の配信とレシート

GET はメンバーのトークンを一覧し、POST はアクティブなワークスペースの下にトークンを upsert し、DELETE は取り消します。一覧と取り消しはユーザースコープのままなので、ワークスペースのないアカウントでもクリーンアップできます。各ユーザーは最大 20 個のデバイストークンを保持し、それ以上の登録では最古のものが削除されます。

アプリ内のワークスペース通知はすべてベストエフォートでプッシュもされます。サーバーは 100 件ずつのチャンクで Expo push API に送信し、ok チケットを記録し、DeviceNotRegistered のトークンを直ちに削除します。オプションのサーバー専用 EXPO_ACCESS_TOKEN はこれらの呼び出しに Bearer ヘッダーを追加し、ログに記録されることはありません。プラットフォームスケジュールが 30 分ごとにレシートを突き合わせ、古いチケットを掃除します — 他のプラットフォームスケジュールと同じスケジューラーの 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 には Web とモバイル体験の出発点として Next.js アプリと Expo アプリが含まれています。

どの認証が含まれていますか?

Better Auth がメール/パスワード、OTP、ソーシャルログインをカバーします。個人ワークスペースはアカウントと一緒にプロビジョニングされ、初日からレコードが境界内に収まります。

AI はどうサポートされていますか?

supastack には設定可能なマルチプロバイダー AI、使用量追跡、予算、暗号化された自前キー(BYOK)サポートが含まれています。

サブスクリプションはどう管理されますか?

このキット上に構築された製品では、Stripe 課金・サブスクリプション・権限が有料アクセスの基盤になります。プロバイダーの秘密はサーバー側に留まります。

製品固有のコードはどこに置きますか?

製品固有の機能は別のコードベースに置き、製品側が supastack の基本モジュールを設定・統合します。

supastack の価格は?

キットは生涯アップデート付きの一回払いです:シングルスタック 249 ドル(Next.js(Web)、Expo(iOS・Android)、Tauri(macOS・Windows デスクトップ)の各リポジトリから1つ選択)、デュアルスタック 398 ドル(任意の2リポジトリ)、またはフルバンドル 399 ドル(3つのリポジトリすべてと完全なモノレポ)、追加開発者シート 1 席 75 ドル。キットのサブスクリプションはありません。このサイトのチェックアウトはライセンスキーをメールで配信し、GitHub 招待でリポジトリアクセスを提供します。

ワークスペースはどうデータを囲いますか?

ユーザーレコードは workspaceId でスコープされます。認証、権限、AI 使用量、課金イベント、監査エントリは個人ワークスペースの境界内に留まります。

バックグラウンドジョブはどう機能しますか?

Trigger.dev が明示的なジョブランタイムです。JobRunner コントラクトは enqueue・status・cancel のみを約束し、ワークフロー意味論は Trigger.dev 固有で明示的です。

メールとアウトリーチの違いは?

トランザクションメールはタスク完了通知などの製品ワークフローをカバーします。コールドアウトリーチやキャンペーンは製品自身に属し、このキットのメールモジュールの外です。

モバイルの購入はどのように機能しますか?

モバイルでは RevenueCat によるネイティブ購入と復元に対応し、アクセス権をサーバーで検証します。公開前にストアアカウントを設定し、実機テストを完了してください。Web 課金は別に管理します。

AI プロバイダーのキーはどこにありますか?

BYOK 認証情報は暗号化され、サーバー側に留まります。キーはログでサニタイズされ、使用量と予算はワークスペースレベルで可視です。

チェックアウトで使える支払い方法は?

Stripe ホストのチェックアウトはカードを受け付け、Stripe アカウントでウォレットを有効にすれば Alipay と WeChat Pay も提供できます——中国の購入者に便利です。ウォレット認可は非同期で確定するため、決済完了と同時にライセンスページが更新されます。

返金を受けることはできますか?

リポジトリへのアクセス権を取得した後は、supastack は永久にあなたのものとなるため、返金はできません。ですがご安心ください。生涯アップデートを含む完全なソースコードを入手し、ご自身やクライアントのために無制限にプロダクトを構築・公開できます。コードの転売や、リポジトリをスターターキットやテンプレートとして再配布することのみ禁止されています。

JA
テーマ