Guideline 3.1.2:App 因訂閱被拒怎麼辦
作者:Mehdi Azizi
發布於 ,9 分鐘
實際扣款金額必須是付費牆最顯眼的價格,並標明期間、續訂與條款連結。附兩次真實被拒與修正。
Guideline 3.1.2 規範的是自動續訂型訂閱。如果 Apple 引用了這條,先檢查兩件事:實際扣款的金額必須是你付費牆上最顯眼的價格,而且 App 和它的商品頁都要寫出期間、價格,並提供能正常開啟的使用條款與隱私權政策連結。
2026 年 10 月,我有兩個 App 收到這種退件:Solys 在 10 日,TradaZen 在 12 日。問題出在同一種顯示方式:每週價格放大,真正扣款的金額縮小。下面依序是規則原文、這兩個案例,以及我現在固定使用的檢查清單。其他退件原因可以看為什麼 Apple 會拒絕 App。
Guideline 3.1.2 寫了什麼?
3.1.2「Subscriptions」位於 App Review Guidelines 第 3 節「Business」的 3.1「Payments」底下。所以信件標題才會是「Guideline 3.1.2 - Business - Payments - Subscriptions」。這條共有三款,括號裡的字母告訴你該往哪裡找問題。
| 款項 | Apple 的要求 | 常見的退件原因 |
|---|---|---|
| 3.1.2(a) Permissible uses | 持續的價值,至少 7 天 | 訂閱內容不會更新 |
| 3.1.2(b) Upgrades and Downgrades | 可切換方案,不重複收費 | 同時付了兩種方案的錢 |
| 3.1.2(c) Subscription Information | 寫清楚能得到什麼、價格多少 | 換算價格比實際扣款金額還大 |
3.1.2(c) 的內容很短。在請使用者訂閱之前,你必須「clearly describe what the user will get for the price」,也就是清楚說明這個價格能換到什麼。接著它引用開發者計畫授權合約的附件 2(Schedule 2)。這份附件列出你必須「clearly and conspicuously」(清楚且顯眼)顯示的內容:
- 訂閱的名稱;
- 訂閱期間;
- 價格,必要時加上單位價格;
- 隱私權政策和使用條款的連結,要能在 App 內開啟。
價格大小的規定在 Apple 的訂閱說明頁。在購買流程中,「the amount that will be billed must be the most prominent pricing element in the layout」:將被扣款的金額必須是版面上最顯眼的價格元素。每月換算價或折扣幅度仍然可以出現,但要放在次要位置、字也要更小。同一頁還要求:有免費試用時,要寫出試用多久,以及試用結束後扣款的金額。
我收到的兩次 3.1.2(c) 退件
Solys:0.38 歐元放大,19.99 歐元縮小
Solys 是我做的鬧鐘 App,會讓你的社群 App 先睡著。在新手引導的付費牆上,「年訂閱」卡片用 21 點粗體顯示「0.38 歐元/週」。下面用 15 點寫著「即 19.99 歐元/年」。但實際扣的是 19.99 歐元,不是 0.38 歐元。
2026 年 10 月 10 日,Apple 引用 3.1.2(c) 退回這個版本。訊息要求扣款金額必須是最清楚、最顯眼的價格元素。免費試用、首發優惠價和換算價格都必須居於次要。Apple 列出了判斷依據:字型、大小、顏色和位置。
這個顯示方式是我明知故犯:TradaZen 先前有個版本用同樣的做法,結果過審了。這是一場賭注,代價是一輪審查。
修正方式:把「19.99 歐元/年」放大,下面用灰色小字寫「即 0.38 歐元/週」,App 支援的 30 種語言全部改。付費牆寫在程式碼裡,所以重新送審前得先出一個新 build。
TradaZen:同樣的原因,兩天後
TradaZen 是我的交易模擬器。2026 年 10 月 12 日,1.5.1 版因為同一條規則被退。訊息提到「weekly calculated」價格顯示得「more clearly and conspicuously than the billed amount」:每週換算價比實際扣款金額還顯眼。
我第一次的修正不夠,送出前我自己就發現了。我把「0.92 歐元/週」縮小,但它還留在右邊、價格那一行。可是週訂閱卡片在同一欄顯示的是它的真實價格:「8.99 歐元/週」。兩個金額看起來是同一層級。換算價格放在真實價格那一欄,就會被讀成扣款價格,就算字再小也一樣。
最後採用的修正:每張卡片右邊放大顯示扣款金額,每週價格改成下方的灰色小字,左邊只放方案名稱。下一次審查時,Apple 就沒有再提到 3.1.2(c)。
這個 App 的其他心得都寫在 TradaZen 案例分析。
Apple 拒絕了什麼、放行了什麼
以下是實際用過的顯示方式,按時間排列,附上結果。
| 價格顯示方式 | 結果 |
|---|---|
| TradaZen 舊版:主打每週價格 | 在先前某次審查中通過 |
| Solys:粗體「0.38 歐元/週」,下方「19.99 歐元/年」 | 2026/10/10 被拒,3.1.2(c) |
| TradaZen 1.5.1:每週價格比扣款金額更顯眼 | 2026/10/12 被拒,3.1.2(c) |
| TradaZen:每週價格縮小,但仍在價格欄 | 送出前被我自己否決 |
| TradaZen:右側放大扣款金額,每週價格當小字 | 下一次審查未再被提及 |
| Solys:放大「19.99 歐元/年」,每週價格灰色小字 | 已修正並重新送審 |
第一列最重要。**這次審查通過,不代表下次你的付費牆也沒問題。**每個版本都會重新交給審查人員,而他可能比上一位更嚴格地解讀規則。唯一安全的顯示方式,就是符合規則原文的那一種。
只有扣款金額能放大。任何換算價格,不論每週、每月或每天,都是更小、更淡的說明文字,絕不能取代它的位置。
符合 3.1.2 的付費牆檢查清單
這是我現在每次送審前,對每個 App 的每個付費牆逐項檢查的清單:
- 每張卡片上,扣款金額都是字最大、對比最強、位置最好的價格。
- 所有換算價格(每週、每月、每天)都是扣款金額下方的說明文字,更小也更淡。
- 換算價格不會出現在其他方案顯示真實價格的那一欄。
- 期間寫得清清楚楚:「每年」、「每週」。
- 免費試用要寫出試用期長度,以及試用結束時扣款的金額。
- 有一句話說明訂閱會自動續訂,並可在 Apple 帳號設定中取消。
- 購買按鈕之前就寫出訂閱能解鎖哪些功能。
- 付費牆上看得到「Restore Purchases」(恢復購買)按鈕。
- 付費牆上有使用條款和隱私權政策的連結,而且點得開。
- 如果有多種方案,照 Apple 的建議放在同一個訂閱群組裡。
- 用最小的 iPhone 和最長的價格字串檢查畫面。在 TradaZen 上,我會測越南盾的價格:金額一換行,層級就亂掉了。
如果你用 RevenueCat 的付費牆,RevenueCat 的文件也有同樣的提醒:如果其他地方沒有出現扣款金額和計費週期,只放一個每月價格變數是不夠的。完整串接請看 RevenueCat:設定 App 內訂閱,設計上的錯誤請看iOS 付費牆:新手常犯的 7 個錯誤。
使用條款與隱私權連結:App 內和商品頁都要有
另一種 3.1.2 退件針對的不是付費牆,而是中繼資料。開發者在 Apple 論壇上分享的訊息說明了 Apple 要的位置:隱私權政策連結放在 App Store Connect 的專用欄位,使用條款(EULA)連結放在描述裡或 EULA 欄位。
陷阱來自標準合約。根據 App Store Connect 說明,如果你沒有加入自訂合約,就會套用 Apple 的標準合約,而且「the license agreement link isn't shown on your App Store product page」:你的商品頁上不會出現任何連結。如果你用的是標準合約,就得自己把連結放進描述裡,指向你的條款頁面或 Apple 標準授權合約。
在我的訂閱型 App 上,我會在描述最後加兩行,商品頁的每種語言都加。以下是範本,請依你的方案和網域調整:
免費試用 7 天,之後為年訂閱或週訂閱,
可隨時取消。
使用條款:https://your-domain.com/terms
隱私權政策:https://your-domain.com/privacy
貼上之前先把兩個連結都打開看看:找不到的頁面等於沒放連結。隱私權政策該寫哪些內容,請看App 的隱私權政策,商品頁的其他部分請看 ASO App Store 頁面。
這一點不需要新 build 就能修正:描述和 App Store Connect 的欄位都屬於中繼資料。
3.1.2(a):訂閱必須提供持續的價值
另一款會導致退件的條文針對的是商業模式,而不是畫面。3.1.2(a) 要求「ongoing value」:隨時間持續的價值。訂閱期至少七天,而且在使用者的所有裝置上都能使用。訂閱者不必額外做任何事(例如發文到社群網站)就能得到他付費的內容。
如果你的 App 提供的是一次性的服務,買斷制可能更適合。兩種模式的比較請看訂閱制還是買斷制。
3.1.2 退件後該怎麼回覆 Apple
對話在你 App 的 App Review 區塊進行。回覆 App Review 的流程和其他規則一樣。會有兩種情況:
- 問題在 App 內(價格大小、付費牆上的說明):需要新 build,就像 Solys 和 TradaZen。審查人員測試的是打包進去的程式碼,我在 guideline 2.1 的指南裡有說明。
- 問題在商品頁(連結缺少或失效):修正中繼資料、回覆訊息,同一筆送審就會重新進入審查。
用英文寫,簡單扼要:哪裡有問題、改了什麼、怎麼驗證。以下是我用的範本(把 build 編號、價格和操作流程換成你自己的):
Hello,
Thank you for your review.
Issue: on the paywall, the weekly equivalent price was displayed
more prominently than the billed amount.
Fix in build X:
- Each plan now shows its billed amount (e.g. "€19.99/year")
as the largest price on the card.
- The weekly equivalent is a smaller grey caption below it.
- The paywall states the duration, the auto-renewal, and links
to our Terms of Use and Privacy Policy.
How to verify: launch the app and complete the onboarding.
The paywall appears at the end.
Best regards,
下次送審前先修好你的付費牆
如果你的 App 剛因 3.1.2 被退,Apple Review Kit 能幫你找出被引用的規則、它的要求,以及修正和回覆的範例。它的 Claude Code skills 也會在送審前幫你檢查付費牆和商品頁。如果想要真人幫你看,跟我預約一小時:我們一起讀 Apple 的訊息,在你的螢幕上重新調整付費牆。完整流程請看 App 被 Apple 拒絕頁面,訂閱的設定請看 iOS App 內訂閱頁面。
如果你正在準備第一次上架,做一次免費診斷:它會幫你把步驟排好順序,並寄給你我的 Apple 防退件檢查清單。想要開發一個手機 App,一上架就開始賺錢,iOS Kit 的第三步「串接金流」專門處理訂閱和付費牆。
沒有人能保證 Apple 一定會接受你的 App。我能做的,是讓你避開我付出兩次代價的 3.1.2(c) 退件。
常見問題
「Guideline 3.1.2 - Business - Payments - Subscriptions」是什麼意思?
這是訂閱規則的完整名稱。它表示價格層級有問題、付費牆缺少資訊、商品頁少了連結,或訂閱沒有持續的價值。括號裡的字母(例如 3.1.2(c))代表針對的是哪一款。
還能顯示每週或每月的價格嗎?
可以。Apple 允許顯示每週或每月的換算價,或是折扣幅度,前提是它們比實際扣款金額更小、更不顯眼。在我的 App 上,換算價都是扣款價格下方的灰色小字,絕不放在真實價格那一欄。
3.1.2 退件後需要新 build 嗎?
如果問題在付費牆上,需要,因為審查人員測試的是打包進去的程式碼。如果問題在商品頁,例如描述裡少了連結,就不需要:修正中繼資料,同一筆送審就會重新進入審查。
使用條款(EULA)連結要放在哪裡?
App 內放在付費牆上。商品頁方面,放在描述裡,或者如果你有自訂合約,就放在 App Store Connect 的 EULA 欄位。使用 Apple 標準合約時,商品頁上不會顯示任何連結:請自己加進描述裡,每種語言都要。
我的付費牆之前過審了,為什麼現在被拒?
因為每個版本都會重新審查,有時是另一位審查人員。主打每週價格的做法曾在 TradaZen 上通過,之後在 2026 年 10 月卻在 Solys 和 TradaZen 上都被拒。只有規則原文才能保護你。