Introductory offer w App Store: darmowy okres próbny iOS
Autor: Mehdi Azizi
Opublikowano , 8 min
Introductory offer to darmowy okres próbny lub niższa cena na start subskrypcji iOS, raz na grupę i konto Apple. Tworzenie i wyświetlanie.
Introductory offer, czyli oferta wprowadzająca, to cena startowa subskrypcji odnawianej automatycznie: darmowy okres próbny, płatność z góry albo płatność w miarę korzystania. Każdy klient ma do niej prawo tylko raz w danej grupie subskrypcji, więc twoja aplikacja musi sprawdzić uprawnienie, zanim napisze „darmowy okres próbny”. Tworzysz ją na stronie cen subskrypcji, a twój paywall musi jasno pokazywać czas trwania oferty i cenę naliczaną po jej zakończeniu.
W Solys i TradaZen 7-dniowy okres próbny jest przypięty do subskrypcji rocznej. Plan tygodniowy go nie ma. Poniżej znajdziesz trzy typy ofert, kto ma do nich prawo, jak je utworzyć, a potem dwa błędy, które popełniłem przy ich wyświetlaniu. Określenie „oferta startowa” często oznacza to samo, także w moim poradniku o błędach w paywallu.
Czym jest introductory offer?
Pomoc App Store Connect definiuje ją jako obniżoną cenę lub darmowy okres próbny, ograniczony w czasie, na pierwszy okres subskrypcji. Dotyczy wyłącznie subskrypcji odnawianych automatycznie. Po zakończeniu oferty subskrypcja odnawia się w normalnej cenie, chyba że użytkownik wcześniej ją anuluje.
Oferta wyświetla się na twojej karcie w App Store osobom uprawnionym. Przy zakupie Apple stosuje ją automatycznie, jeśli użytkownik ma do niej prawo. Twoje zadanie to nie obiecywać na ekranie oferty, której Apple nie przyzna.
Trzy typy ofert wprowadzających
Dokumentacja StoreKit opisuje trzy tryby płatności. Oto każdy z nich na fikcyjnym przykładzie: plan roczny za 39,99 € i miesięczny za 6,99 €. To nie są ceny żadnej z moich aplikacji.
| Typ | Fikcyjny przykład | Płatne na start | Potem |
|---|---|---|---|
| Darmowy okres próbny | 7 dni gratis | 0 € | 39,99 €/rok |
| Płatność z góry | 3 miesiące za 9,99 € | 9,99 € jednorazowo | 39,99 €/rok |
| Płatność w miarę | 2,99 €/mies., 3 miesiące | 2,99 € miesięcznie | 6,99 €/mies. |
A oto co ekran powinien mówić w każdym przypadku, nadal z tymi fikcyjnymi cenami:
- Darmowy okres próbny: „7 dni za darmo, potem 39,99 € rocznie.” W trakcie okresu próbnego subskrypcja już trwa, ale nic nie jest pobierane przed jego końcem.
- Płatność z góry: „9,99 € za pierwsze 3 miesiące, potem 39,99 € rocznie.” Użytkownik płaci raz za cały obniżony okres.
- Płatność w miarę korzystania: „2,99 € miesięcznie przez 3 miesiące, potem 6,99 € miesięcznie.” Obniżona cena powtarza się w każdym okresie.
We wszystkich trzech przypadkach zdanie zawiera cenę, która zostanie naliczona po ofercie.
Kto ma prawo do oferty wprowadzającej?
Pomoc Apple mówi jasno: jedna możliwa oferta na subskrypcję, ale tylko jedna oferta wprowadzająca na osobę i na grupę subskrypcji. Dokumentacja StoreKit precyzuje trzy przypadki:
- nowy subskrybent zawsze ma do niej prawo;
- były subskrybent, który wraca, ma do niej prawo, jeśli nigdy nie skorzystał z oferty wprowadzającej w tej grupie;
- obecny subskrybent nie ma do niej prawa, nawet jeśli zmienia plan w tej samej grupie.
Uprawnienie jest przypisane do płacącego konta Apple, nie do iPhone'a ani do konta założonego w twojej aplikacji. Ktoś, kto skorzystał z okresu próbnego, anulował i ponownie zainstalował aplikację, nie ma już do niego prawa. A produkt dalej ogłasza swoją ofertę: stąd bierze się mylący komunikat.
Bezpośrednia konsekwencja: okres próbny w planie tygodniowym zużyłby prawo do okresu próbnego w planie rocznym, bo oba są w tej samej grupie. Dlatego moje okresy próbne są tylko w planie rocznym.
Kolejne ograniczenie: możesz mieć jedną aktywną ofertę wprowadzającą i jedną przyszłą na kraj. Jeśli dwie oferty się nakładają, ostatnio utworzona zastępuje drugą. W lipcu 2026 w TradaZen chciałem mieć w planie rocznym jednocześnie obniżoną cenę i darmowy okres próbny. Tylko jedna oferta naraz: albo jedno, albo drugie. Ostatecznie utworzyłem drugą, tańszą subskrypcję roczną, do której przypiąłem okres próbny.
Tworzenie oferty w App Store Connect
Potrzebujesz roli Account Holder, Admin, App Manager lub Marketing. Etykiety pochodzą z pomocy Apple:
- W Apps otwórz swoją aplikację, potem Subscriptions na pasku bocznym.
- Wybierz grupę, a potem subskrypcję.
- W sekcji Subscription Prices kliknij View all Subscription Pricing, a potem Set up Introductory Offer.
- Wybierz kraje lub regiony, a potem daty rozpoczęcia i zakończenia. Jeśli zaczynasz dzisiaj, oferta rusza od razu.
- Wybierz Free, Pay up front lub Pay as you go, potem czas trwania i cenę.
- App Store Connect proponuje równoważne ceny dla 175 krajów. W razie potrzeby je dostosuj i potwierdź.
Utworzonej oferty nie da się już edytować: żeby zmienić czas trwania albo cenę, usuń ją w zakładce Introductory Offers i utwórz od nowa. Zmiana może dotrzeć do sandboxa nawet po godzinie. Dokumentacja RevenueCat radzi też odczekać do 24 godzin, zanim uznasz, że oferta nie działa.
Możliwe czasy trwania
Darmowy okres próbny trwa 3 dni, 1 lub 2 tygodnie, 1, 2, 3 lub 6 miesięcy albo 1 rok, niezależnie od okresu subskrypcji. Płatność z góry obejmuje 1, 2, 3 lub 6 miesięcy albo 1 rok. Płatność w miarę korzystania zależy od okresu subskrypcji:
| Subskrypcja | Płatność w miarę |
|---|---|
| 1 tydzień | 1 do 12 tygodni |
| 1 miesiąc | 1 do 12 miesięcy |
| 2 miesiące | 2 do 12 miesięcy, co 2 |
| 3 miesiące | 3, 6, 9 lub 12 miesięcy |
| 6 miesięcy | 6 lub 12 miesięcy |
| 1 rok | 1 rok |
W moich aplikacjach wybrałem 7 dni, w planie rocznym. To nie reguła Apple, tylko decyzja produktowa, którą warto zweryfikować własnymi pomiarami.
Pokazuj okres próbny tylko tym, którzy mają do niego prawo
Apple pisze to na tej samej stronie pomocy: jeśli pokazujesz ofertę w aplikacji, upewnij się, że użytkownik naprawdę może z niej skorzystać. Zadaj swojemu kodowi dwa pytania: czy produkt ma darmowy okres próbny i czy ta osoba nadal ma do niego prawo?
Odpowiedź na pierwsze odczytasz z produktu. Uwaga, oferta wprowadzająca nie musi być darmowa. W TradaZen standardowy plan roczny miał płatność z góry, czyli tańszy pierwszy rok, a okres próbny był w drugim planie rocznym. Oba są zwracane jako „oferta wprowadzająca”. Dlatego mój kod odczytuje cenę oferty: zero oznacza okres próbny, więcej niż zero to oferta płatna.
Drugie pytanie zadajesz sklepowi. W Swift StoreKit 2 udostępnia isEligibleForIntroOffer, od iOS 15. Apple zaznacza, że ta wartość może być prawdziwa nawet bez skonfigurowanej oferty: stąd pierwsze pytanie. Z RevenueCat w aplikacji Expo to checkTrialOrIntroductoryPriceEligibility, które zwraca: uprawniony, nieuprawniony, brak oferty albo nieznany. Oto zasada w TypeScript:
import Purchases, {
INTRO_ELIGIBILITY_STATUS as S,
type PurchasesStoreProduct,
} from "react-native-purchases";
type Essai = "oui" | "non" | "doute";
export async function essaiGratuit(p: PurchasesStoreProduct): Promise<Essai> {
if (!p.introPrice || p.introPrice.price > 0) return "non";
try {
const r = await Purchases.checkTrialOrIntroductoryPriceEligibility([
p.identifier,
]);
const statut = r[p.identifier]?.status;
if (statut === S.INTRO_ELIGIBILITY_STATUS_ELIGIBLE) return "oui";
if (statut === S.INTRO_ELIGIBILITY_STATUS_INELIGIBLE) return "non";
if (statut === S.INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS)
return "non";
return "doute";
} catch {
return "doute";
}
}
Prawdziwym problemem jest przypadek „wątpliwy” ("doute"). RevenueCat opisuje swoje sprawdzenie jako szacunek typu best effort, a arkusz płatności Apple i tak pokazuje prawdziwe warunki przed zatwierdzeniem. Przy nieznanym statusie RevenueCat radzi wyświetlać normalną cenę, żeby nikogo nie wprowadzić w błąd.
Drugą stronę problemu poznałem w TradaZen. Pierwsza wersja traktowała błąd odczytu jak odmowę: osoby, które miały prawo do okresu próbnego, go nie widziały. Dziś moje aplikacje ukrywają okres próbny tylko przy jednoznacznej odmowie sklepu: nieuprawniony albo brak oferty. W razie wątpliwości zostaje to, co pokazuje produkt. To mój kompromis, a nie zalecenie RevenueCat: jeśli wolisz ostrożność, trzymaj się ich zalecenia. W obu przypadkach nigdy nie myl „nie wiem” z „nie”.
Jeśli używasz paywalli RevenueCat, każdy tekst może mieć wersję dla osób uprawnionych do oferty, zgodnie z ich stroną o ofertach. Resztę konfiguracji znajdziesz w moim poradniku RevenueCat dla subskrypcji iOS.
Czego wytyczna 3.1.2 wymaga na ekranie
Wytyczna 3.1.2(a) pozwala na darmowy okres próbny w subskrypcji, pod warunkiem podania informacji przewidzianych przez App Store Connect. Strona Apple o subskrypcjach precyzuje: w ścieżce zakupu okresu próbnego jasno podaj jego czas trwania i cenę naliczaną na końcu. Naliczana kwota musi też być najbardziej widocznym elementem cenowym na ekranie.
Odrzucenie, które Solys dostał 10 października 2026, mówiło to wprost: darmowy okres próbny, cena startowa i ceny przeliczone muszą być podporządkowane naliczanej kwocie. Okres próbny można ogłosić, ale cena naliczana później musi pozostać najczytelniejszą ceną na ekranie. Oba odrzucenia i ich poprawkę opisałem w poradniku o wytycznej 3.1.2.
Zdarza się też odwrotny błąd: oferowanie okresu próbnego bez mówienia o nim. Kiedyś przyciski w moich paywallach mówiły „Kontynuuj”. W Solys „7 dni gratis” istniało wręcz tylko w etykiecie VoiceOver, a nie w widocznym tekście.
Testowanie oferty w sandboxie
Kup subskrypcję kontem sandbox: okres próbny powinien pojawić się na arkuszu płatności Apple. Żeby odtworzyć ścieżkę nowego subskrybenta, wybierz Clear Purchase History w ustawieniach konta sandbox na iPhonie. Według dokumentacji sandboxa Apple konto znów staje się wtedy uprawnione do ofert wprowadzających.
Przetestuj też konto, które już skorzystało z okresu próbnego: twój paywall nie powinien już ogłaszać niczego darmowego. Jeśli produkt w ogóle się nie ładuje, przeczytaj mój poradnik o statusie Missing Metadata.
Podłącz darmowy okres próbny bez błędów
iOS & Android Kit bazuje na kodzie startowym moich aplikacji: onboarding, paywall i subskrypcje są już napisane, a jego trzeci etap, „podłączenie pieniędzy”, prowadzi cię przez konfigurację produktów i okresu próbnego. Cały łańcuch opisuję na stronie subskrypcja in-app iOS. Jeśli wciąż wahasz się co do modelu, zacznij od tekstu subskrypcja czy zakup jednorazowy.
Jeśli przygotowujesz swoją pierwszą publikację, zrób darmową diagnozę: ustawi kroki we właściwej kolejności i wyśle ci moją checklistę przeciw odrzuceniom Apple. Jeśli chcesz podarować miesiąc albo odzyskać byłego subskrybenta, ciąg dalszy znajdziesz w moim poradniku o kodach ofert.
Najczęściej zadawane pytania
Czym jest introductory offer w App Store?
To cena startowa subskrypcji odnawianej automatycznie: darmowy okres próbny, płatność z góry albo płatność w miarę korzystania. Tworzy się ją w App Store Connect, a Apple automatycznie stosuje ją przy zakupie u osób uprawnionych. Potem subskrypcja przechodzi na normalną cenę.
Czy użytkownik może skorzystać z dwóch darmowych okresów próbnych?
Nie w tej samej grupie subskrypcji: tylko jedna oferta wprowadzająca na grupę i na konto Apple. Ponowna instalacja aplikacji nie przywraca uprawnienia. Jeśli natomiast zasubskrybuje coś w innej grupie twojej aplikacji, może skorzystać z oferty tej grupy.
Czy można połączyć darmowy okres próbny i zniżkę?
Nie w tej samej subskrypcji w tym samym czasie: tylko jedna aktywna oferta wprowadzająca na kraj. Możesz utworzyć drugą subskrypcję z drugą ofertą albo użyć kodu oferty, który w zależności od ustawień może zadziałać po ofercie wprowadzającej.
Czy trzeba wydać nową wersję aplikacji, żeby dodać okres próbny?
Dla samej oferty nie: ustawia się ją w App Store Connect i działa przy zakupie. Ale jeśli twój paywall ma „7 dni” wpisane na sztywno w kodzie, trzeba go zaktualizować. Odczytuj czas trwania z produktu zwracanego przez sklep, a ekran się dostosuje.
Czy były subskrybent ma prawo do darmowego okresu próbnego?
Tak, jeśli nigdy nie skorzystał z oferty wprowadzającej w tej grupie subskrypcji. Jeśli już z niej skorzystał, nie ma do niej prawa, nawet po wielu miesiącach. Żeby go odzyskać, Apple oferuje oferty win-back i oferty promocyjne.

