啟動序列,逐步
啟動訂閱應用程式不只是 StoreKit 或 Play Billing 整合。這是一個必須按順序發生的決策序列,因為出錯一個步驟——跳過沙盒測試、信任客戶端而不是伺服器——傾向於表現為支持票證或被拒絕的構建週後,而不是立即。
- 首先定義定價和付款牆策略:免費試用長度、月度對年度層級、以及付款牆在使用者流程中出現的位置,在寫任何代碼前。
- 實現商店計費——iOS 上的 StoreKit、Android 上的 Play Billing——或如果你需要跨平台一個代碼庫則包裝兩者的訂閱管理層。
- 構建付款牆 UI 並將其連接到在 App Store Connect 和 Google Play Console 中配置的真實產品 ID。
- 伺服器端檢查權利,而不只是設備上。客戶端報告使用者嘗試購買什麼;只有你的伺服器,根據 Apple 和 Google 的收據資料驗證,應決定他們實際獲得什麼。
- 在提交前使用沙盒和測試帳戶測試完整購買、續期和取消流程。沙盒訂閱根據壓縮計時器續期,因此週真實世界續期行為可以在幾小時內驗證。
- 提交商店審核,使用完整元資料並預算至少一個拒絕回合的時間——訂閱應用程式在定價揭露和恢復購買功能上獲得額外審查。
- 為啟動後的生命週期事件計畫:續期、自願取消、來自失敗付款的非自願流失、退款和計費寬期。
為什麼權利檢查屬於伺服器
訂閱應用程式最大的技術風險不是計費整合本身——Apple 和 Google 框架有詳細的文件。這是信任設備報告其自己的購買狀態。修改的應用程式二進位制、欺騙本地標誌或簡單的網路競態條件可以使客戶端相信使用者已訂閱,當商店記錄說別的。修復是一個伺服器,獨立地驗證每個購買對抗 Apple 和 Google 伺服器、將權利狀態儲存在其自己的資料庫中,並基於該記錄閘化存取——永遠不是應用程式本身報告的標誌。
這是訂閱啟動中更容易出錯的部分之一,也是 Venture AI Agency 的行動應用程式開發工作集中的地方:構建權利層、付款牆 UI 和訂閱狀態 Webhook,使伺服器端記錄與 App Store 和 Google Play 計費事件保持同步,因此存取決策永遠不會取決於信任客戶端。
延遲啟動的商店審核陷阱
App Store 和 Google Play 審核團隊比免費應用程式更密切地查看訂閱應用程式,因為訂閱涉及對真實支付方法的重複收費。大多數拒絕追溯到一個小的、可重複的一組問題。
- 缺失或不清晰的定價揭露——價格、計費周期和試用條款必須在使用者被收費前可見,而不是隱藏在設定中。
- 沒有工作恢復購買流程,iOS 上必需,Android 上預期,適用於重新安裝應用程式或切換設備的使用者。
- 付款牆阻止核心功能而不解釋訂閱實際解鎖的內容。
- 為數位訂閱內容使用商店自己計費系統以外的支付方式,Apple 和 Google 都禁止外特定例外。
- 在沒有沙盒測試的續期和取消流程的情況下提交,以便首個真實錯誤來自付費使用者而不是審核團隊。
啟動後管理續期、取消和退款
啟動是訂閱生命週期的開始,而不是結束。一旦真實訂戶存在,後端必須反應它沒有啟動的事件:續期成功或失敗、使用者從其設定中取消而不是在應用程式內取消、付款方法到期或商店發行的退款。Apple 和 Google 都為這些事件發送伺服器對伺服器通知,訂閱應用程式應將這些通知視為權利狀態的事實來源,而不是輪詢或等待應用程式重新打開。
失敗的續期是一個特定情況:兩個平台都提供計費寬期,在此期間存取可以簡短繼續,而支付方式被重試。忽略這一點的訂閱應用程式要麼太早切斷付費使用者,要麼讓存取時間過長。從一開始在此生命週期處理中構建比在支持票證開始到達後改造它便宜。