跳轉到內容
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-tw/docs/mobile/publishing.md (or send Accept: text/markdown).

釋出到應用商店

區分可以執行的構建與使用者能夠安裝的正式版本。

詢問本指南
開啟方式

逐步準備您的第一個商店提交

首先使用移動構建建立並測試本機開發構建。商店提交將編譯後的應用程式及其列表傳送給 Google 或 Apple 進行稽核;它與開啟 Expo Go 預覽不同。您需要自己的 Expo 和相關商店開發者帳戶、經過測試的 HTTPS 後端、最終應用程式名稱/圖示、螢幕截圖、支援聯絡人和公共隱私政策 URL。

在編輯器中開啟apps/mobile/app.json,並在第一次上傳之前設定自己產品的應用名稱、slug、ios.bundleIdentifier和android.package。開啟 apps/mobile/eas.json 並根據需要將 iOS 提交團隊的應用程式識別符號替換為您自己的應用程式識別符號。提供的識別符號是示例。閱讀 Mobile builds 瞭解確切的欄位,並要求您的編碼代理在構建之前檢查這兩個檔案。

如果未安裝eas,請執行npm install --global eas-cli。從儲存庫根目錄使用下面的登入命令,完成瀏覽器身份驗證,然後在“構建”中選擇一個平臺的構建命令,然後提交。閱讀構建的儀錶板日誌;在嘗試提交之前等待成功的 .aab 或 .ipa。 EAS 提示專案連結和簽名憑據;這些屬於您的帳戶,而不是套件賣家的帳戶。

上傳二進位制檔案後,在 Play Console 或 App Store Connect 中開啟您的應用,完成列表和所需的調查問卷,新增工作稽核者登入說明,然後提交以供稽核。上傳內部草稿並不屬於公開發布。如果稽核拒絕,請開啟拒絕中的確切政策連結並在重新提交之前更正該問題。

corepack pnpm --filter @supastack/mobile exec eas login

設定帳戶一次

商店提交需要三個帳戶:用於 EAS 構建和提交的免費 Expo 帳戶、Google Play Console 開發者註冊以及 iOS 的 Apple 開發者計劃會員資格。在構建之前安裝EAS CLI並執行eas login;兩家商店的註冊都可能需要幾天的時間來驗證,因此請儘早開始。

在首次上傳之前重新命名應用程式識別符號 - android.package 和 ios.bundleIdentifier 在 apps/mobile/app.json. 中作為 com.supastack.app 釋出。Google Play 在首次上傳時鎖定包名稱,因此錯誤的識別符號意味著新的應用程式條目而不是重新命名。

讓EAS管理簽名

apps/mobile/eas.json 定義開發、預覽和生產構建配置檔案。生產配置檔案允許 EAS 在其基礎設施上生成並儲存 Android 金鑰庫和 iOS 分發證書 - 稍後使用 eas credentials 檢查它們,並將本地金鑰庫保留在儲存庫之外。

自動提交 Play 需要在 Play Console → 設定 → API 訪問許可權下連結具有釋出許可權的 Google Play 服務帳戶 JSON 金鑰。將其儲存在 apps/mobile/secrets/play-store-service-account.json - eas.json 期望的路徑和 git-ignored 目錄。新應用的首次上傳仍然在 Play 管理中心手動進行; eas submit 接替第二個版本。

構建,然後提交

構建在 EAS 基礎設施上執行,因此二進位制檔案不需要安裝 Android Studio 或 Xcode。生產配置檔案會生成用於 Play 的商店就緒 .aab 和用於 App Store 的 .ipa,並具有遠端管理的版本號。預覽配置檔案為物理裝置 QA 生成內部分發 APK。

釋出的提交配置檔案將 Play 內部軌道作為草案版本作為目標 - 測試人員不會收到任何訊息,除非您在稽核通過後在 Play 管理中心內推廣它。

corepack pnpm --filter @supastack/mobile build:android
corepack pnpm --filter @supastack/mobile submit:android

corepack pnpm --filter @supastack/mobile build:ios
corepack pnpm --filter @supastack/mobile submit:ios

# Internal-testing APK for a physical device:
corepack pnpm --filter @supastack/mobile build:android:preview

填寫 Play 管理中心表格

對宣告的內容和二進位制檔案一樣進行審查:公共隱私政策 URL、資料安全表格、內容評級調查問卷、目標受眾和類別。回答來自應用程式真實行為的資料安全 - 該套件收集帳戶電子郵件進行身份驗證,將會話令牌儲存在平臺安全儲存中,並且僅與您配置的 API 對話;新增您的產品在頂部新增的任何內容。

對於需要登入的 iOS 應用程式,請向應用程式稽核提供有效的演示帳戶以及稽核說明中的說明。在選擇社交登入選項之前,請先檢視 Apple 當前的登入服務規則及其例外情況;要求取決於應用程式的實際登入流程。官方指南位於上面的首次提交部分。

先RevenueCat後面的門購買

當您的應用程式提供移動購買時,請配置已發貨的 RevenueCat 流程:設定 MOBILE_PURCHASES_PROVIDER=revenuecat 和 EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat,然後提供匹配的公共 iOS 或 Android SDK 金鑰。原生App支援購買和恢復;在任一之後,訪問都會從伺服器驗證的工作區權利重新整理。 Stripe Checkout 未在移動流程中使用。當購買停止或缺少所需配置時,請保持付費專區不可用。使用商店測試帳戶在 EAS 開發版本中驗證配置的商店產品、購買、恢復和權利重新整理。檢視當前的商店指南,瞭解適用於您的應用和區域的要求。

預提交清單

提交之前,請使用您自己的測試應用程式和商店帳戶確認以下每一項。

  • android.package 和 ios.bundleIdentifier 重新命名為您擁有的識別符號
  • 構建環境中的 EXPO_PUBLIC_API_URL 指向生產 API
  • 隱私政策託管在公共 URL 上並連結在商品詳情中
  • 資料安全表單與真實集合相匹配:身份驗證電子郵件、API 流量、您的產品新增的任何內容
  • App Store 稽核說明中的工作模擬帳戶憑據
  • 付費牆隱藏,或由經過驗證的 RevenueCat 權利支援
  • 在物理裝置上驗證深層連結返回、會話恢復和登出
  • 為每個商店準備的螢幕截圖和列表資產

從拒絕中恢復

拒絕帶有政策參考——修復所宣告的原因,而不是猜測症狀。資料安全不匹配通常意味著表單錯誤,而不是應用程式錯誤。需要登入的拒絕通常意味著評論筆記缺少模擬帳戶。重新提交併附上明確指出修復程式的發行說明。

完整的演練(憑證命令、控制台操作順序和拒絕手冊)位於儲存庫中的 docs/mobile-store-submission.md 中。

安裝與配置

原生應用釋出需要 Apple 和/或 Google 開發者賬戶、應用標識、簽名憑據和商店稽核。production EAS 配置會自動遞增商店構建號;submit.production 會將草稿提交到 Google Play 內部測試軌道。Bundle identifier 和應用 scheme 位於 apps/mobile/app.config.ts。

Web 部署和應用商店釋出節奏不同;API 應繼續相容最舊的受支援版本,或通過伺服器狀態控制新功能。

corepack pnpm --filter @supastack/mobile build
eas build --profile production --platform ios
eas build --profile production --platform android
eas submit --profile production --platform ios
eas submit --profile production --platform android

實現流程

啟用原生購買前,請先在 RevenueCat 配置專案、商店產品和權益。服務端 secret key 與 Webhook Authorization 值只能放在伺服器環境中;iOS 和 Android SDK key 是公開構建變數。生產環境必須關閉沙盒訪問。

將截圖、說明、隱私答覆和購買說明等商店資料納入產品自己的釋出材料。應用顯示購買許可權之前,RevenueCat 購買和恢復結果會先經過伺服器當前 subscriber 狀態驗證。

驗證與排障

在實體裝置上測試最終提交的安裝包:登入回撥、會話恢復、購買與恢復、伺服器權益重新整理、工作區切換、深連結及離線行為。成功的本地 Expo 匯出不是可提交商店的構建。

記錄構建號、商店軌道、稽核狀態和目標 API 環境。稽核被拒也是釋出流程的一部分;根據要求修正文案或功能標記,不要盲目猜測程式碼問題。

下一個介面:Desktop 欄會帶你瞭解 Tauri 外殼。

常見問題

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 將永久歸你所有,因此無法退款。但請放心,你將獲得包含終身更新的完整原始碼,可為你自己或客戶構建併發布無限數量的產品。你只需注意不能轉賣程式碼,也不能將倉庫作為啟動模板二次分發。唯一的例外是上線返現——上線一款用 supastack 打造的真實產品並公開分享,在購買後 60 天內達到 5,000 次自然瀏覽或 50 個自然按讚,即可退還已付款項的 50%;詳見條款。

TW
主題