Guideline 3.1.2: aplikasi ditolak kerana langganan
Oleh Mehdi Azizi
Diterbitkan pada , 9 min
Guideline 3.1.2: amaun yang dicaj mesti harga paling menonjol pada paywall, dengan tempoh, pembaharuan dan pautan terma. Dua penolakan sebenar dan pembetulannya.
Guideline 3.1.2 mengawal langganan auto-renew. Jika Apple memetiknya, semak dua perkara: amaun yang benar-benar dicaj mesti harga paling menonjol pada paywall anda, dan aplikasi serta halaman App Store anda mesti menyatakan tempoh, harga dan pautan yang berfungsi ke terma penggunaan dan dasar privasi anda.
Saya menerima penolakan ini untuk dua aplikasi saya pada Oktober 2026: Solys pada 10 haribulan, TradaZen pada 12 haribulan. Paparan yang sama menjadi punca: harga seminggu dalam saiz besar, amaun sebenar yang dicaj dalam saiz kecil. Berikut teks peraturan itu, dua kes tersebut, kemudian senarai semak yang saya gunakan sekarang. Untuk sebab-sebab lain, baca kenapa Apple menolak aplikasi.
Apa kata guideline 3.1.2?
3.1.2, "Subscriptions", terletak dalam seksyen 3 "Business" dalam App Review Guidelines, bahagian 3.1 "Payments". Sebab itulah tajuk e-melnya: "Guideline 3.1.2 - Business - Payments - Subscriptions". Ia ada tiga perenggan kecil, dan huruf dalam kurungan memberitahu anda di mana perlu mencari.
| Perenggan | Apa yang Apple tuntut | Penolakan biasa |
|---|---|---|
| 3.1.2(a) Permissible uses | Nilai berterusan, minimum 7 hari | Langganan tanpa kandungan yang berkembang |
| 3.1.2(b) Upgrades and Downgrades | Tukar pelan tanpa caj berganda | Dua pelan dibayar serentak |
| 3.1.2(c) Subscription Information | Apa yang diperoleh, pada harga berapa | Harga kiraan lebih besar daripada yang dicaj |
Teks 3.1.2(c) pendek. Sebelum meminta seseorang melanggan, anda mesti "clearly describe what the user will get for the price": terangkan dengan jelas apa yang dia dapat untuk harga itu. Ia kemudian merujuk kepada lampiran 2 (Schedule 2) dalam lesen program pembangun. Lampiran ini menyenaraikan apa yang mesti anda paparkan "clearly and conspicuously", dengan jelas dan ketara:
- tajuk langganan;
- tempohnya;
- harganya, dan harga seunit jika relevan;
- pautan ke dasar privasi dan terma penggunaan anda, yang boleh diakses dalam aplikasi.
Peraturan tentang saiz harga ada pada halaman Apple tentang langganan. Dalam aliran pembelian, "the amount that will be billed must be the most prominent pricing element in the layout": amaun yang akan dicaj mesti elemen harga paling menonjol. Harga setara sebulan atau penjimatan masih dibenarkan, dengan syarat ia di kedudukan sekunder dan lebih kecil. Halaman yang sama meminta, untuk percubaan percuma, supaya dinyatakan tempohnya dan harga yang dicaj selepas ia tamat.
Dua penolakan 3.1.2(c) yang saya terima
Solys: 0,38 € besar, 19,99 € kecil
Solys ialah jam loceng saya yang "menidurkan" media sosial anda. Pada paywall onboarding, kad "Tahunan" memaparkan "0,38 €/minggu" dalam 21 poin dan tebal. Di bawahnya, dalam 15 poin: "iaitu 19,99 €/tahun". Sedangkan yang dicaj ialah 19,99 €, bukan 0,38 €.
Pada 10 Oktober 2026, Apple menolak versi itu dengan memetik 3.1.2(c). Mesejnya meminta amaun yang dicaj menjadi elemen harga paling jelas dan paling menonjol. Percubaan percuma, harga pelancaran dan harga kiraan mesti berada di bawahnya. Apple menyebut kriterianya: fon, saiz, warna dan kedudukan.
Saya sengaja mengekalkan paparan ini: versi TradaZen sebelumnya, dibina atas prinsip yang sama, telah diterima. Ia satu pertaruhan, dan ia memakan satu kitaran semakan.
Pembetulannya: "19,99 €/tahun" dalam saiz besar, "iaitu 0,38 €/minggu" sebagai kapsyen kelabu di bawahnya, dalam kesemua 30 bahasa aplikasi. Oleh sebab paywall berada dalam kod, saya perlu build baharu sebelum menghantar semula versi itu.
TradaZen: sebab yang sama, dua hari kemudian
TradaZen ialah simulator dagangan saya. Pada 12 Oktober 2026, versi 1.5.1 ditolak atas peraturan yang sama. Mesejnya menyebut harga "weekly calculated" yang dipaparkan "more clearly and conspicuously than the billed amount": harga setara seminggu lebih menonjol daripada amaun yang dicaj.
Pembetulan pertama saya tidak mencukupi, dan saya sedar sebelum menghantarnya. Saya mengecilkan "0,92 €/minggu" tetapi membiarkannya di kanan, pada baris harga. Namun kad langganan mingguan memaparkan, dalam lajur yang sama, harga sebenarnya: "8,99 €/minggu". Kedua-dua amaun dibaca pada tahap yang sama. Harga kiraan yang diletakkan dalam lajur harga sebenar dibaca sebagai harga yang dicaj, walaupun kecil.
Pembetulan yang dipilih: setiap kad memaparkan amaun yang dicaj dalam saiz besar, di sebelah kanan. Harga seminggu menjadi kapsyen kelabu di bawahnya. Di sebelah kiri, hanya nama pelan. Pada semakan seterusnya, Apple tidak lagi menyebut 3.1.2(c).
Pengajaran lain daripada aplikasi ini ada dalam kajian kes TradaZen.
Apa yang Apple tolak, apa yang lulus
Berikut paparan sebenar, mengikut urutan, bersama keputusannya.
| Paparan harga | Keputusan |
|---|---|
| TradaZen, versi terdahulu: harga seminggu ditonjolkan | Diterima pada semakan terdahulu |
| Solys: "0,38 €/minggu" tebal, "19,99 €/tahun" di bawah | Ditolak pada 10/10/2026, 3.1.2(c) |
| TradaZen 1.5.1: harga seminggu lebih menonjol daripada yang dicaj | Ditolak pada 12/10/2026, 3.1.2(c) |
| TradaZen: harga seminggu dikecilkan, tetapi dalam lajur harga | Saya batalkan sebelum dihantar |
| TradaZen: amaun dicaj besar di kanan, mingguan sebagai kapsyen | Tidak lagi disebut pada semakan seterusnya |
| Solys: "19,99 €/tahun" besar, mingguan sebagai kapsyen kelabu | Dibetulkan dan dihantar semula kepada Apple |
Baris pertama paling penting. Semakan yang diterima tidak mengesahkan paywall anda untuk semakan seterusnya. Setiap versi disemak semula oleh penyemak, yang mungkin membaca peraturan dengan lebih ketat daripada yang sebelumnya. Satu-satunya paparan yang selamat ialah yang mematuhi teks peraturan.
Amaun yang dicaj ialah satu-satunya harga bersaiz besar. Sebarang harga setara, seminggu, sebulan atau sehari, ialah kapsyen yang lebih kecil dan lebih pudar, tidak pernah di tempatnya.
Senarai semak paywall yang patuh 3.1.2
Inilah senarai yang saya semak sekarang pada setiap paywall aplikasi saya, sebelum setiap penghantaran:
- Pada setiap kad, amaun yang dicaj ialah harga paling besar, paling kontras dan paling baik kedudukannya.
- Sebarang harga kiraan (seminggu, sebulan, sehari) ialah kapsyen, lebih kecil dan lebih pudar, di bawah amaun yang dicaj.
- Tiada harga kiraan berada dalam lajur di mana pelan lain memaparkan harga sebenarnya.
- Tempoh ditulis dengan jelas: "setahun", "seminggu".
- Percubaan percuma menyatakan tempohnya dan amaun yang dicaj selepas percubaan tamat.
- Satu ayat menyatakan langganan diperbaharui secara automatik dan boleh dibatalkan dalam tetapan akaun Apple.
- Apa yang dibuka oleh langganan ditulis sebelum butang beli.
- Butang "Restore Purchases" kelihatan pada paywall.
- Pautan ke terma penggunaan dan dasar privasi ada pada paywall dan boleh dibuka.
- Jika anda menawarkan beberapa pelan, semuanya dalam satu kumpulan langganan, seperti yang Apple sarankan.
- Paparan disemak pada iPhone paling kecil dan dengan harga paling panjang. Untuk TradaZen, saya uji harga dalam dong Vietnam: amaun yang melimpah ke baris baharu merosakkan hierarki.
Jika anda menggunakan paywall RevenueCat, dokumentasi RevenueCat memberi amaran yang sama: pemboleh ubah harga bulanan sahaja tidak mencukupi jika amaun yang dicaj dan kekerapannya tidak muncul di tempat lain. Penyambungan lengkap ada dalam RevenueCat: menyediakan langganan dalam aplikasi, dan kesilapan reka bentuk dalam paywall iOS: 7 kesilapan pemula.
Pautan terma dan privasi: dalam aplikasi dan di halaman App Store
Satu lagi bentuk penolakan 3.1.2 tidak menyasarkan paywall, tetapi metadata. Mesej yang dikongsi oleh pembangun di forum Apple menjelaskan tempat yang dijangka: pautan dasar privasi dalam medan khas di App Store Connect, dan pautan terma penggunaan (EULA) dalam deskripsi atau dalam medan EULA.
Perangkapnya datang daripada perjanjian standard. Menurut bantuan App Store Connect, jika anda tidak menambah perjanjian tersuai, perjanjian standard Apple terpakai dan "the license agreement link isn't shown on your App Store product page": tiada pautan muncul di halaman anda. Jika anda menggunakan perjanjian standard, anda sendiri perlu meletakkan pautannya dalam deskripsi, ke halaman terma anda atau ke perjanjian lesen standard Apple.
Untuk aplikasi langganan saya, saya tamatkan deskripsi dengan dua baris, dalam setiap bahasa halaman. Berikut templatnya, sesuaikan dengan tawaran dan domain anda:
Percubaan percuma 7 hari, kemudian langganan tahunan atau mingguan,
boleh dibatalkan pada bila-bila masa.
Terma: https://your-domain.com/terms
Privasi: https://your-domain.com/privacy
Buka kedua-dua pautan sebelum menampalnya: halaman yang tidak wujud sama seperti tiada pautan. Kandungan yang perlu ada dalam dasar privasi diterangkan dalam dasar privasi aplikasi, dan bahagian lain halaman App Store dalam ASO App Store.
Perkara ini boleh dibetulkan tanpa build baharu: deskripsi dan medan App Store Connect ialah metadata.
3.1.2(a): langganan mesti memberi nilai berterusan
Satu lagi perenggan yang menyebabkan penolakan menyasarkan model, bukan skrin. 3.1.2(a) menuntut "ongoing value": nilai yang berterusan dari masa ke masa. Tempohnya sekurang-kurangnya tujuh hari, dan langganan berfungsi pada semua peranti pengguna. Pelanggan mendapat apa yang dibayarnya tanpa tugas tambahan, seperti menyiarkan di media sosial.
Jika aplikasi anda memberi perkhidmatan sekali sahaja, pembelian sekali mungkin lebih sesuai. Kedua-dua model dibandingkan dalam langganan atau pembelian sekali.
Apa nak balas kepada Apple selepas penolakan 3.1.2
Perbualan berlaku dalam bahagian App Review aplikasi anda. Prosedur untuk membalas App Review sama seperti untuk peraturan lain. Ada dua situasi:
- Masalahnya dalam aplikasi (saiz harga, maklumat pada paywall): perlu build baharu, seperti Solys dan TradaZen. Penyemak menguji kod yang dibina, saya terangkan dalam panduan tentang guideline 2.1.
- Masalahnya di halaman App Store (pautan tiada atau rosak): anda betulkan metadata, anda balas, dan penghantaran yang sama diteruskan.
Tulis dalam bahasa Inggeris, ringkas: apa masalahnya, apa yang berubah, cara mengesahkannya. Berikut templat yang saya gunakan (gantikan nombor build, harga dan aliran dengan milik anda):
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,
Betulkan paywall anda sebelum penghantaran seterusnya
Jika aplikasi anda baru ditolak atas 3.1.2, Apple Review Kit membantu anda mencari peraturan yang dipetik, apa yang dituntutnya, dan contoh pembetulan serta balasan. Skill Claude Code di dalamnya juga menyemak paywall dan halaman App Store anda sebelum dihantar. Untuk pandangan manusia, tempah satu jam bersama saya: kita baca mesej Apple dan semak semula paywall anda di skrin anda. Langkah lengkap ada di halaman aplikasi ditolak oleh Apple, dan penyediaan langganan di halaman langganan dalam aplikasi iOS.
Jika anda sedang menyediakan pelancaran pertama, buat diagnostik percuma anda: ia menyusun langkah-langkah mengikut urutan dan menghantar senarai semak anti-penolakan Apple saya. Untuk membina aplikasi mudah alih yang menjana wang sejak dilancarkan, iOS Kit menumpukan langkah ketiganya, "sambungkan wang", kepada langganan dan paywall.
Tiada siapa boleh menjamin Apple akan menerima aplikasi anda. Apa yang saya boleh lakukan ialah membantu anda mengelak penolakan 3.1.2(c) yang telah saya bayar dua kali.
Soalan lazim
Apa maksud "Guideline 3.1.2 - Business - Payments - Subscriptions"?
Itu tajuk penuh peraturan tentang langganan. Ia menandakan harga yang hierarkinya salah, maklumat yang tiada pada paywall, pautan yang tiada di halaman App Store atau langganan tanpa nilai berterusan. Huruf dalam kurungan, contohnya 3.1.2(c), menunjukkan perenggan yang disasarkan.
Bolehkah saya masih memaparkan harga seminggu atau sebulan?
Boleh. Apple membenarkan harga setara seminggu atau sebulan, atau penjimatan, dengan syarat ia kekal lebih kecil dan kurang menonjol daripada amaun yang benar-benar dicaj. Dalam aplikasi saya, harga setara ialah kapsyen kelabu di bawah harga yang dicaj, tidak pernah dalam lajur harga sebenar.
Perlukah build baharu selepas penolakan 3.1.2?
Ya jika masalahnya pada paywall, kerana penyemak menguji kod yang dibina. Tidak jika ia di halaman App Store, seperti pautan yang tiada dalam deskripsi: anda betulkan metadata dan penghantaran yang sama diteruskan.
Di mana perlu letak pautan terma penggunaan (EULA)?
Dalam aplikasi, pada paywall. Di halaman App Store, dalam deskripsi atau dalam medan EULA App Store Connect jika anda ada perjanjian tersuai. Dengan perjanjian standard Apple, tiada pautan dipaparkan di halaman anda: tambahkannya sendiri dalam deskripsi, dalam setiap bahasa.
Paywall saya pernah diterima, kenapa ia ditolak sekarang?
Kerana setiap versi disemak semula, kadang-kadang oleh penyemak lain. Harga seminggu yang ditonjolkan pernah diterima pada TradaZen, kemudian ditolak pada Solys dan TradaZen pada Oktober 2026. Hanya teks peraturan yang melindungi anda.