RevenueCat 教學:iOS App 內訂閱設定
作者:Mehdi Azizi
更新於 ,7 分鐘
RevenueCat 串接 App Store Connect 產品與你的 App,並管理存取權限。四步驟完成第一個 iOS 訂閱。
為什麼用 RevenueCat,而不是只用 StoreKit
StoreKit 是 Apple 的框架,不靠任何第三方服務就能販售訂閱。但對新手來說,自己寫完整的購買、恢復購買和存取權限驗證邏輯,代表要維護一大堆程式碼,還有很多容易漏掉的邊界情況:換裝置、到期、退款。
RevenueCat 介於 App Store Connect 和你的 App 之間:它讀取你的產品、管理有效訂閱,讓你不用自己寫這一層。價格和優惠都能在後台控制,每次調整都不必重新上架 App。
步驟 1:在 App Store Connect 建立產品
在用 RevenueCat 之前,產品必須先在 Apple 那邊存在。在 App Store Connect 建立一個訂閱群組,再建立一個或多個等級,設定期限(例如月繳或年繳)以及各地區的價格。每個方案也要填好顯示給使用者的文字:Apple 在審核接受產品前會要求這些資料。
這個階段常見的疏忽:產品建立了,卻從來沒有跟對應版本一起送進 App 的第一次審核。一個從未包含在 App 提交中的待處理產品,你的使用者會看不到,即使 RevenueCat 已經看得到它。
步驟 2:把 RevenueCat 接上你的 App
在 RevenueCat 裡,你建立一個專案,連結你的 App Store Connect API 金鑰,讓 RevenueCat 自動同步你的產品,接著定義「entitlements」,也就是存取權限。一個 entitlement 代表訂閱解鎖的內容,例如完整使用 App,和實際觸發它的是哪個產品無關。
這層間接設計很實用:之後如果你改變方案結構,例如新增年繳方案,只要把新產品連到同一個 entitlement,App 裡檢查權限的程式碼完全不用動。
在 App 端,RevenueCat 的 React Native SDK 可以透過專用 plugin 安裝到 Expo 專案中,並提供一個簡單的函式,判斷目前使用者是否擁有有效的 entitlement。
步驟 3:打造你的付費牆
付費牆是展示方案並觸發購買的畫面。RevenueCat 提供可在後台設定的付費牆,修改時不必重新上架 App;如果你想完全掌控設計,也可以用 SDK 自己做。
擺放位置和設計一樣重要。在使用者還沒看到 App 價值之前就跳出的付費牆,轉換率通常比放在第一次成功操作之後的差。iOS 付費牆新手常見錯誤這篇整理了這個階段最常見的陷阱,不只是技術串接而已。
步驟 4:測試購買、恢復購買與到期
這是最常被草草帶過的步驟,偏偏也是 Apple 檢查最多的。送審前有三個情境必須正常運作:
購買。 使用 sandbox 測試帳號,購買後必須立即解鎖 entitlement,而且你的 App 要能即時反應這個變化,不需要重新啟動 App。
恢復購買。 在新裝置上或重新安裝後,使用同一個 Apple 帳號,「恢復購買」按鈕必須能找回有效的訂閱。Apple 審核時一定會檢查這個流程,缺少或無法正常運作,是依據 guideline 3.1.1 被拒的常見原因。
到期。 在 sandbox 環境中,訂閱會在幾分鐘內到期,而不是幾個月,讓你不用等真實的計費週期,就能確認期限結束後權限有正確關閉。
RevenueCat 無法取代的部分
RevenueCat 處理的是購買機制,不負責你的商品頁和付費牆是否符合 guideline 3.1.2。你還是得在 App Store 描述中正確說明訂閱內容、標示確切價格與期限,並填寫你的使用條款。iOS 訂閱制還是一次性買斷這篇能幫你在進入技術步驟之前,先選對商業模式。
另外,RevenueCat 在月營收超過一定門檻後會抽成,這是在 Apple 對 App 內訂閱的抽成之外另外收取的。在以這兩筆抽成規劃你的商業模式之前,請先到他們官網確認目前的級距。
新手最常犯的錯誤
忘了載入狀態。 App 啟動時,RevenueCat 需要一小段時間取得使用者的存取權限。如果你的 App 在收到回應前預設顯示付費內容,沒有訂閱的使用者可能會短暫看到沒付費的內容。請設計明確的載入狀態,不要預設樂觀地直接顯示。
在錯的地方檢查權限。 每次打開付費畫面都要重新檢查 entitlement 是否有效,而不是只在啟動時檢查一次。如果使用者在使用 App 時取消訂閱或訂閱到期,下一個畫面就必須反映這個變化。
搞混 sandbox 與正式環境。 產品 ID 和 sandbox 測試帳號跟正式環境是分開的。用錯 Apple 帳號在 sandbox 測試成功,或產品只建立在正式環境,都可能讓你誤以為一切已經就緒。
經過驗證的 App,而不只是能編譯的 App
用自己的帳號快速測試時「能用」的訂閱,不代表在另一台裝置上恢復購買或真正到期時也沒問題。而這正是 Apple 審核人員會檢查的。iOS App 內訂閱頁面詳細說明了整條流程,從建立產品到最後的驗證。
如果你想從一個付費牆和訂閱都已經寫好的基礎開始,iOS Kit 的 Starter Code 就包含這些。想像審核人員那樣檢查你的訂閱,Apple Review Kit 收錄了我的送審前檢查清單,以及要留給審核人員的 App 內購買測試說明。
常見問題
如何在 iOS 上設定 RevenueCat 訂閱?
分四個步驟。先在 App Store Connect 建立產品。接著用你的 App Store Connect API 金鑰連接 RevenueCat,定義 entitlements(存取權限),然後打造付費牆。最後測試購買、恢復購買與到期:這一步常被草草帶過,卻是 Apple 會檢查的。
在 iOS 上販售訂閱一定要用 RevenueCat 嗎?
不用。Apple 的框架 StoreKit 不靠第三方服務就能販售訂閱。但這樣你就得自己寫完整的購買、恢復購買和存取權限驗證邏輯,還有容易漏掉的邊界情況:換裝置、到期、退款。RevenueCat 介於 App Store Connect 和你的 App 之間,幫你省掉這一層。
RevenueCat 裡的 entitlement 是什麼?
entitlement 就是存取權限:代表訂閱解鎖的內容,例如完整使用 App,不論實際觸發它的是哪個產品。之後如果新增年繳方案,只要把新產品連到同一個 entitlement 就好。App 裡檢查權限的程式碼不需要更改。
送審 Apple 前如何測試 RevenueCat 訂閱?
送審前有三個情境必須正常運作。購買:使用 sandbox 測試帳號,權限立即解鎖,不必重新啟動 App。恢復購買:在新裝置上或重新安裝後,使用同一個 Apple 帳號,恢復購買按鈕能找回有效訂閱。到期:在 sandbox 中訂閱幾分鐘就會到期,讓你確認權限有正確關閉。
為什麼 RevenueCat 看得到的產品,使用者卻看不到?
通常是因為該產品從未包含在 App 提交中。在 App Store Connect 建立、但從未跟對應版本一起送進第一次審核的產品,你的使用者會看不到,即使 RevenueCat 已經看得到。這是建立產品階段常見的疏忽。
RevenueCat 會對訂閱抽成嗎?
RevenueCat 在月營收超過一定門檻後會抽成,而且是在 Apple 對 App 內訂閱的抽成之外另外收取。在以這兩筆抽成規劃商業模式之前,請先到 RevenueCat 官網確認目前的級距。