Guideline 3.1.2: aplikacija zavrnjena zaradi naročnine
Avtor: Mehdi Azizi
Objavljeno , 9 min
Guideline 3.1.2: zaračunani znesek mora biti najbolj viden na paywallu, skupaj s trajanjem, obnavljanjem in povezavami do pogojev. Dve zavrnitvi in popravek.
Guideline 3.1.2 ureja samodejno obnovljive naročnine. Če jo Apple navede, preveri dve stvari: dejansko zaračunani znesek mora biti najbolj vidna cena na tvojem paywallu, aplikacija in njena stran v trgovini pa morata navesti trajanje, ceno in delujoče povezave do pogojev uporabe in politike zasebnosti.
To zavrnitev sem oktobra 2026 dobil pri dveh svojih aplikacijah: pri Solys 10., pri TradaZen 12. Kriv je bil isti prikaz: velika cena na teden, pravi zaračunani znesek pa z drobnim tiskom. Tukaj so besedilo pravila, oba primera in kontrolni seznam, ki ga zdaj uporabljam. Za druge razloge preberi, zakaj Apple zavrne aplikacijo.
Kaj pravi guideline 3.1.2?
3.1.2, »Subscriptions«, je v razdelku 3 »Business« dokumenta App Review Guidelines, v delu 3.1 »Payments«. Od tod naslov e-pošte: »Guideline 3.1.2 - Business - Payments - Subscriptions«. Ima tri točke in črka v oklepaju ti pove, kje iskati.
| Točka | Kaj zahteva Apple | Tipična zavrnitev |
|---|---|---|
| 3.1.2(a) Permissible uses | Stalna vrednost, najmanj 7 dni | Naročnina brez vsebine, ki se razvija |
| 3.1.2(b) Upgrades and Downgrades | Menjava paketa brez podvajanja | Dva paketa plačana hkrati |
| 3.1.2(c) Subscription Information | Kaj uporabnik dobi in za kakšno ceno | Izračunana cena večja od zaračunane |
Besedilo 3.1.2(c) je kratko. Preden nekoga prosiš, naj se naroči, moraš »clearly describe what the user will get for the price«: jasno opisati, kaj za to ceno dobi. Nato napoti na prilogo 2 (Schedule 2) licenčne pogodbe programa za razvijalce. Ta priloga našteva, kaj moraš prikazati »clearly and conspicuously«, jasno in vidno:
- naziv naročnine;
- njeno trajanje;
- njeno ceno in, kadar je smiselno, ceno na enoto;
- povezave do politike zasebnosti in pogojev uporabe, dostopne v aplikaciji.
Pravilo o velikosti cen je na Applovi strani o naročninah. V postopku nakupa »the amount that will be billed must be the most prominent pricing element in the layout«: znesek, ki bo zaračunan, mora biti najbolj viden cenovni element. Mesečni ekvivalent ali prihranek sta dovoljena, če sta v podrejenem položaju in manjša. Ista stran pri brezplačnem preizkusu zahteva, da navedeš njegovo trajanje in ceno, ki se zaračuna ob koncu.
Moji dve zavrnitvi 3.1.2(c)
Solys: 0,38 € veliko, 19,99 € drobno
Solys je moja budilka, ki uspava tvoja družbena omrežja. Na paywallu ob uvajanju je kartica »Letno« prikazovala »0,38 €/ted.« v velikosti 21 pik in krepko. Pod njo, v 15 pikah: »torej 19,99 €/leto«. A zaračuna se 19,99 €, ne 0,38 €.
- oktobra 2026 Apple zavrne različico s sklicem na 3.1.2(c). Sporočilo zahteva, da je zaračunani znesek najjasnejši in najbolj viden cenovni element. Brezplačni preizkus, uvodna cena in izračunane cene mu morajo ostati podrejeni. Apple navede svoja merila: pisavo, velikost, barvo in postavitev.
Ta prikaz sem obdržal zavestno: prejšnja različica TradaZen, zgrajena po istem načelu, je bila sprejeta. Bila je stava in stala me je en krog pregleda.
Popravek: »19,99 €/leto« veliko, »torej 0,38 €/ted.« kot siv podnapis spodaj, v vseh 30 jezikih aplikacije. Ker je paywall v kodi, je bil pred ponovno oddajo potreben nov build.
TradaZen: isti razlog, dva dni pozneje
TradaZen je moj simulator trgovanja. 12. oktobra 2026 je različica 1.5.1 zavrnjena zaradi istega pravila. Sporočilo omenja ceno »weekly calculated«, prikazano »more clearly and conspicuously than the billed amount«: tedenski ekvivalent je bil bolj viden od zaračunanega zneska.
Moj prvi popravek ni zadoščal, in to sem opazil pred oddajo. »0,92 €/ted« sem pomanjšal, a ga pustil desno, v vrstici cene. Kartica tedenske naročnine pa je v istem stolpcu prikazovala svojo pravo ceno: »8,99 €/ted«. Oba zneska sta se brala kot enakovredna. Izračunana cena v stolpcu pravih cen se bere kot zaračunana cena, tudi če je majhna.
Izbrani popravek: vsaka kartica ima svoj zaračunani znesek veliko, desno. Cena na teden gre v siv podnapis spodaj. Levo samo ime paketa. Pri naslednjem pregledu Apple 3.1.2(c) ni več omenil.
Druge lekcije te aplikacije so v študiji primera TradaZen.
Kaj je Apple zavrnil in kaj je šlo skozi
Tukaj so dejanski prikazi po vrsti, z rezultatom.
| Prikaz cene | Rezultat |
|---|---|
| TradaZen, prejšnja različica: cena na teden v ospredju | Sprejeto pri prejšnjem pregledu |
| Solys: »0,38 €/ted.« krepko, »19,99 €/leto« spodaj | Zavrnjeno 10. 10. 2026, 3.1.2(c) |
| TradaZen 1.5.1: cena na teden bolj vidna od zaračunane | Zavrnjeno 12. 10. 2026, 3.1.2(c) |
| TradaZen: cena na teden pomanjšana, a v stolpcu cen | Sam sem jo opustil pred oddajo |
| TradaZen: zaračunano veliko desno, teden v podnapisu | Pri naslednjem pregledu ni več omenjeno |
| Solys: »19,99 €/leto« veliko, teden v sivem podnapisu | Popravljeno in ponovno poslano Applu |
Najpomembnejša je prva vrstica. Sprejet pregled ne potrdi tvojega paywalla za naslednjega. Vsaka različica gre znova pred pregledovalca, ki lahko pravilo bere strožje od prejšnjega. Edini varen prikaz je tisti, ki spoštuje besedilo.
Zaračunani znesek je edina velika cena. Vsak ekvivalent, na teden, na mesec ali na dan, je manjši in bledejši podnapis, nikoli na njegovem mestu.
Kontrolni seznam za paywall, skladen s 3.1.2
To je seznam, ki ga zdaj pred vsako oddajo preletim na vsakem paywallu svojih aplikacij:
- Na vsaki kartici je zaračunani znesek največja, najbolj kontrastna in najbolje postavljena cena.
- Vsaka izračunana cena (na teden, na mesec, na dan) je podnapis, manjša in bledejša, pod zaračunanim zneskom.
- Nobena izračunana cena ne zaseda stolpca, v katerem drug paket prikazuje svojo pravo ceno.
- Trajanje je jasno napisano: »na leto«, »na teden«.
- Brezplačni preizkus navede svoje trajanje in znesek, zaračunan ob koncu preizkusa.
- Stavek pove, da se naročnina samodejno obnavlja in da jo prekličeš v nastavitvah računa Apple.
- Kaj naročnina odklene, je napisano pred gumbom za nakup.
- Gumb »Restore Purchases« je na paywallu viden.
- Povezave do pogojev uporabe in politike zasebnosti so na paywallu in se odprejo.
- Če ponujaš več paketov, so v eni sami skupini naročnin, kot svetuje Apple.
- Prikaz je preverjen na najmanjšem iPhonu in z najdaljšo ceno. Pri TradaZen testiram ceno v vietnamskih dongih: znesek, ki se prelomi v novo vrstico, podre hierarhijo.
Če uporabljaš paywalle RevenueCat, dokumentacija RevenueCat opozarja na isto: sama spremenljivka mesečne cene ne zadošča, če zaračunani znesek in njegova periodičnost nista prikazana drugje. Celotna integracija je v članku RevenueCat: nastavitev naročnine v aplikaciji, napake pri zasnovi pa v paywall za iOS: 7 začetniških napak.
Povezave do pogojev in zasebnosti: v aplikaciji in na strani v trgovini
Druga oblika zavrnitve 3.1.2 ne cilja na paywall, ampak na metapodatke. Sporočila, ki so jih razvijalci objavili na Applovih forumih, natančno povedo, kje se pričakuje: povezava do politike zasebnosti v za to namenjenem polju v App Store Connect, povezava do pogojev uporabe (EULA) pa v opisu ali v polju EULA.
Past je standardna pogodba. Po pomoči za App Store Connect velja, če ne dodaš lastne pogodbe, Applova standardna pogodba in »the license agreement link isn't shown on your App Store product page«: na tvoji strani se ne prikaže nobena povezava. Če uporabljaš standardno pogodbo, moraš njeno povezavo sam dodati v opis, do svoje strani s pogoji ali do Applove standardne licenčne pogodbe.
Pri aplikacijah z naročnino opis končam z dvema vrsticama, v vsakem jeziku strani. Tukaj je predloga, prilagodi jo svoji ponudbi in domeni:
7-dnevni brezplačni preizkus, nato letna ali tedenska naročnina,
ki jo lahko kadar koli prekličeš.
Pogoji: https://your-domain.com/terms
Zasebnost: https://your-domain.com/privacy
Obe povezavi odpri, preden ju prilepiš: stran, ki je ni, je enako kot povezava, ki je ni. Kaj mora vsebovati politika, je podrobno v članku politika zasebnosti aplikacije, preostanek strani pa na strani ASO App Store.
To se popravi brez novega builda: opis in polja v App Store Connect so metapodatki.
3.1.2(a): naročnina mora prinašati stalno vrednost
Druga točka, zaradi katere pride do zavrnitve, cilja na model, ne na zaslon. 3.1.2(a) zahteva »ongoing value«: vrednost, ki traja skozi čas. Obdobje traja vsaj sedem dni, naročnina pa deluje na vseh uporabnikovih napravah. Naročnik dobi, kar je plačal, brez dodatne naloge, kot je objava na družbenem omrežju.
Če tvoja aplikacija storitev opravi enkrat za vselej, se morda bolje obnese enkratni nakup. Oba modela primerjam v članku naročnina ali enkratni nakup.
Kaj odgovoriti Applu po zavrnitvi 3.1.2
Pogovor poteka v razdelku App Review tvoje aplikacije. Postopek, kako odgovoriti App Review, je enak kot pri drugih pravilih. Možna sta dva primera:
- Težava je v aplikaciji (velikost cen, navedbe na paywallu): potreben je nov build, kot pri Solys in TradaZen. Pregledovalec testira vgrajeno kodo, to razložim v vodiču o guideline 2.1.
- Težava je na strani v trgovini (manjkajoče ali mrtve povezave): popraviš metapodatke, odgovoriš in ista oddaja gre znova v pregled.
Piši v angleščini, preprosto: kaj je bilo narobe, kaj se je spremenilo, kako to preveriti. Tukaj je predloga, ki jo uporabljam (številko builda, cene in potek zamenjaj s svojimi):
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,
Popravi svoj paywall pred naslednjo oddajo
Če je bila tvoja aplikacija pravkar zavrnjena zaradi 3.1.2, ti Apple Review Kit pomaga najti navedeno pravilo, kaj zahteva, ter primer popravka in odgovora. Njegovi skilli za Claude Code pred oddajo pregledajo tudi tvoj paywall in stran v trgovini. Če želiš človeški pogled, rezerviraj uro z mano: skupaj prebereva Applovo sporočilo in predelava tvoj paywall na tvojem zaslonu. Celoten postopek je na strani aplikacija, ki jo je Apple zavrnil, nastavitev naročnine pa na strani naročnina v aplikaciji iOS.
Če pripravljaš svojo prvo izdajo, opravi brezplačno diagnostiko: koraki se postavijo v pravi vrstni red, dobiš pa tudi moj kontrolni seznam proti Applovim zavrnitvam. Če želiš ustvariti mobilno aplikacijo, ki služi že od izida, iOS Kit svoj tretji korak, »priklop denarja«, posveti naročnini in paywallu.
Nihče ne more zagotoviti, da bo Apple tvojo aplikacijo sprejel. Lahko pa ti prihranim zavrnitev 3.1.2(c), ki sem jo plačal dvakrat.
Pogosta vprašanja
Kaj pomeni »Guideline 3.1.2 - Business - Payments - Subscriptions«?
To je polni naziv pravila o naročninah. Opozarja na slabo hierarhijo cen, manjkajočo informacijo na paywallu, manjkajočo povezavo na strani v trgovini ali naročnino brez stalne vrednosti. Črka v oklepaju, na primer 3.1.2(c), označuje zadevno točko.
Ali lahko še prikažem ceno na teden ali na mesec?
Da. Apple dovoli tedenski ali mesečni ekvivalent ali prihranek, če ostaneta manjša in manj vidna od dejansko zaračunanega zneska. V mojih aplikacijah je ekvivalent siv podnapis pod zaračunano ceno, nikoli v stolpcu pravih cen.
Ali po zavrnitvi 3.1.2 potrebujem nov build?
Da, če je težava na paywallu, saj pregledovalec testira vgrajeno kodo. Ne, če je na strani v trgovini, na primer manjkajoča povezava v opisu: popraviš metapodatke in ista oddaja gre znova v pregled.
Kam dati povezavo do pogojev uporabe (EULA)?
V aplikaciji na paywall. Na strani v trgovini v opis ali v polje EULA v App Store Connect, če imaš lastno pogodbo. S standardno Applovo pogodbo se na tvoji strani ne prikaže nobena povezava: sam jo dodaj v opis, v vsakem jeziku.
Moj paywall je bil že sprejet, zakaj je zdaj zavrnjen?
Ker gre vsaka različica znova v pregled, včasih pred drugega pregledovalca. Cena na teden v ospredju je bila pri TradaZen sprejeta, nato pa oktobra 2026 zavrnjena pri Solys in TradaZen. Zaščiti te samo besedilo pravila.