Introductory offer iOS: безкоштовний пробний період
Автор: Mehdi Azizi
Опубліковано , 8 хв
Introductory offer це безкоштовний пробний період або знижена ціна на старті підписки iOS, один раз на групу підписок і на Apple-акаунт.
Introductory offer, або вступна пропозиція, це стартова ціна підписки з автоматичним поновленням: безкоштовний пробний період, оплата наперед або оплата за кожен період. Кожен клієнт має на неї право лише один раз у межах групи підписок, тож твій застосунок має перевірити право на неї, перш ніж писати «безкоштовний пробний період». Створюєш її на сторінці цін підписки, а твій paywall має чітко показувати тривалість пропозиції та ціну, яку буде списано після неї.
У Solys і TradaZen 7-денний безкоштовний пробний період прив'язаний до річної підписки. Тижневий тариф його не має. Нижче: три типи пропозицій, хто має на них право, як їх створити, і дві помилки, які я зробив у відображенні. Термін «стартова пропозиція» часто означає те саме, зокрема в моєму гайді про помилки paywall.
Що таке introductory offer?
Довідка App Store Connect визначає її як знижену ціну або безкоштовний пробний період, обмежений у часі, для першого періоду підписки. Вона стосується лише підписок з автоматичним поновленням. Коли пропозиція закінчується, підписка поновлюється за звичайною ціною, якщо людина не скасує її раніше.
Пропозиція показується на твоїй сторінці в App Store людям, які мають на неї право. Під час покупки Apple застосовує її автоматично, якщо людина має на неї право. Твоє завдання: не обіцяти на екрані пропозицію, яку Apple не надасть.
Три типи вступних пропозицій
Документація StoreKit описує три способи оплати. Ось кожен на вигаданому прикладі: річна підписка за 39,99 € і місячна за 6,99 €. Це не ціни жодного з моїх застосунків.
| Тип | Вигаданий приклад | Оплата на старті | Далі |
|---|---|---|---|
| Безкоштовний період | 7 днів безкоштовно | 0 € | 39,99 €/рік |
| Оплата наперед | 3 місяці за 9,99 € | 9,99 € один раз | 39,99 €/рік |
| Оплата за кожен період | 2,99 €/міс., 3 місяці | 2,99 € щомісяця | 6,99 €/міс. |
А ось що має бути написано на екрані для кожного, з тими самими вигаданими цінами:
- Безкоштовний пробний період: «7 днів безкоштовно, далі 39,99 € на рік». Під час пробного періоду підписка вже почалася, але гроші не списуються до його кінця.
- Оплата наперед: «9,99 € за перші 3 місяці, далі 39,99 € на рік». Людина платить один раз за весь знижений період.
- Оплата за кожен період: «2,99 € на місяць протягом 3 місяців, далі 6,99 € на місяць». Знижена ціна списується щоперіоду.
У всіх трьох випадках фраза містить ціну, яку буде списано після пропозиції.
Хто має право на вступну пропозицію?
Довідка Apple тут однозначна: одна можлива пропозиція на підписку, але лише одна вступна пропозиція на людину в межах групи підписок. Документація StoreKit уточнює три випадки:
- новий підписник завжди має на неї право;
- колишній підписник, який повертається, має право, якщо ніколи не використовував вступну пропозицію в цій групі;
- чинний підписник права не має, навіть якщо змінює тариф у межах тієї ж групи.
Право прив'язане до Apple-акаунта, з якого платять, а не до iPhone чи акаунта у твоєму застосунку. Хто вже скористався пробним періодом, скасував підписку й перевстановив застосунок, права більше не має. Але продукт і далі оголошує свою пропозицію: саме звідси береться оманливе відображення.
Прямий наслідок: пробний період на тижневому тарифі використав би право на пробний період річного, бо обидва тарифи в одній групі. Тому в мене пробний період лише на річному.
Ще одне обмеження: у кожній країні може бути одна поточна вступна пропозиція й одна майбутня. Якщо дві пропозиції перетинаються, остання створена замінює іншу. У липні 2026-го в TradaZen я хотів на річному тарифі і знижену ціну, і безкоштовний пробний період. Одна пропозиція за раз: або те, або інше. Зрештою я створив другу, дешевшу річну підписку, яка й несе пробний період.
Створюємо пропозицію в App Store Connect
Потрібна роль Account Holder, Admin, App Manager або Marketing. Назви взято з довідки Apple:
- В Apps відкрий свій застосунок, потім Subscriptions у бічній панелі.
- Обери групу, потім підписку.
- У розділі Subscription Prices натисни View all Subscription Pricing, потім Set up Introductory Offer.
- Обери країни чи регіони, потім дати початку й кінця. Якщо почнеш сьогодні, пропозиція стартує одразу.
- Обери Free, Pay up front або Pay as you go, потім тривалість і ціну.
- App Store Connect пропонує еквівалентні ціни для 175 країн. За потреби підкоригуй їх і підтверди.
Створену пропозицію змінити вже не можна: щоб змінити тривалість чи ціну, видали її на вкладці Introductory Offers і створи знову. Зміна може доходити до sandbox до години. Документація RevenueCat також радить почекати до 24 годин, перш ніж вирішувати, що пропозиція не застосовується.
Можлива тривалість
Безкоштовний пробний період триває 3 дні, 1 чи 2 тижні, 1, 2, 3 чи 6 місяців або 1 рік, незалежно від тривалості підписки. Оплата наперед покриває 1, 2, 3 чи 6 місяців або 1 рік. Оплата за кожен період залежить від тривалості підписки:
| Підписка | Оплата за кожен період |
|---|---|
| 1 тиждень | від 1 до 12 тижнів |
| 1 місяць | від 1 до 12 місяців |
| 2 місяці | від 2 до 12 місяців, кроком 2 |
| 3 місяці | 3, 6, 9 або 12 місяців |
| 6 місяців | 6 або 12 місяців |
| 1 рік | 1 рік |
У своїх застосунках я обрав 7 днів на річному тарифі. Це не правило Apple, а продуктове рішення, яке варто перевіряти на власних даних.
Показуй пробний період лише тим, хто має на нього право
Apple пише про це на тій самій сторінці довідки: якщо показуєш пропозицію в застосунку, переконайся, що людина справді може нею скористатися. Постав своєму коду два питання: чи має продукт безкоштовний пробний період, і чи має ця людина ще на нього право?
Відповідь на перше читається з продукту. Обережно: вступна пропозиція не обов'язково безкоштовна. У TradaZen стандартна річна підписка мала оплату наперед, тобто дешевший перший рік, а пробний період жив на іншій річній. Обидві приходять як «вступна пропозиція». Тому мій код читає ціну пропозиції: нуль означає пробний період, більше нуля означає платну пропозицію.
Друге питання ставиться магазину. У Swift StoreKit 2 дає isEligibleForIntroOffer, починаючи з iOS 15. Apple уточнює, що це значення може бути true, навіть якщо пропозицію не налаштовано: звідси й перше питання. З RevenueCat у застосунку на Expo це checkTrialOrIntroductoryPriceEligibility, що повертає: має право, не має права, пропозиції немає або невідомо. Ось принцип на 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";
}
}
Головне питання тут це випадок «сумнів» ("doute"). RevenueCat описує свою перевірку як найкращу можливу оцінку, а платіжне вікно Apple все одно показує реальні умови перед підтвердженням. Для невідомого статусу RevenueCat радить показувати звичайну ціну, щоб нікого не ввести в оману.
Зворотний бік проблеми я пізнав на TradaZen. Перша версія вважала помилку читання відмовою: люди, які мали право на пробний період, його не бачили. Сьогодні мої застосунки прибирають пробний період лише при чіткій відмові магазину: немає права або немає пропозиції. У разі сумніву лишається те, що показує продукт. Це мій компроміс, а не рекомендація RevenueCat: якщо віддаєш перевагу обережності, дотримуйся їхньої. В обох випадках ніколи не плутай «не знаю» з «ні».
Якщо користуєшся paywall від RevenueCat, кожен текст може мати версію для людей, які мають право на пропозицію, згідно з їхньою сторінкою про пропозиції. Решта налаштування є в моєму гайді RevenueCat для підписки iOS.
Що вимагає 3.1.2 на екрані
Guideline 3.1.2(a) дозволяє безкоштовний пробний період для підписки за умови, що ти надаєш інформацію, передбачену App Store Connect. Сторінка Apple про підписки уточнює: у процесі покупки пробного періоду чітко вкажи його тривалість і ціну, яку буде списано наприкінці. Сума до списання також має бути найпомітнішим ціновим елементом на екрані.
Відмова, яку Solys отримав 10 жовтня 2026-го, саме про це: безкоштовний пробний період, стартова ціна й розраховані ціни мають бути підпорядковані сумі до списання. Пробний період можна анонсувати, але ціна, яку спишуть потім, має лишатися найчитабельнішою ціною на екрані. Обидві відмови та їхнє виправлення є в моєму гайді про guideline 3.1.2.
Буває й протилежна помилка: пропонувати пробний період і не казати про це. Свого часу кнопки моїх paywall казали «Продовжити». У Solys «7 днів безкоштовно» взагалі було лише в мітці VoiceOver, а не у видимому тексті.
Тестуємо пропозицію в sandbox
Купи підписку з sandbox-акаунта: пробний період має з'явитися в платіжному вікні Apple. Щоб повторити шлях нового підписника, обери Clear Purchase History у налаштуваннях sandbox-акаунта на iPhone. Згідно з документацією Apple про sandbox, акаунт тоді знову має право на вступні пропозиції.
Протестуй і акаунт, який уже використав пробний період: твій paywall не має більше обіцяти нічого безкоштовного. Якщо продукт узагалі не завантажується, прочитай мій гайд про статус Missing Metadata.
Підключаємо безкоштовний пробний період без помилок
iOS & Android Kit побудований на стартовому коді моїх застосунків: онбординг, paywall і підписки вже написані, а його третій крок, «підключити гроші», веде тебе через налаштування продуктів і пробного періоду. Увесь ланцюжок описано на сторінці підписка in-app iOS. Якщо ще вагаєшся з моделлю, почни з підписка чи разова покупка.
Якщо готуєш свій перший реліз, пройди безкоштовну діагностику: вона розставить кроки по порядку й надішле тобі мій чекліст проти відмов Apple. Як подарувати місяць або повернути колишнього підписника, читай у моєму гайді про коди пропозицій.
Поширені запитання
Що таке introductory offer в App Store?
Це стартова ціна підписки з автоматичним поновленням: безкоштовний пробний період, оплата наперед або оплата за кожен період. Створюється в App Store Connect, і Apple автоматично застосовує її під час покупки для людей, які мають на неї право. Далі підписка переходить на звичайну ціну.
Чи може користувач двічі отримати безкоштовний пробний період?
Не в межах однієї групи підписок: лише одна вступна пропозиція на групу й на Apple-акаунт. Перевстановлення застосунку права не повертає. Натомість якщо він підпишеться в іншій групі твого застосунку, то зможе скористатися пропозицією цієї групи.
Чи можна поєднати безкоштовний пробний період і знижку?
Не на одній підписці одночасно: лише одна поточна вступна пропозиція на країну. Можна створити другу підписку з іншою пропозицією або використати код пропозиції, який залежно від налаштувань може йти після вступної пропозиції.
Чи потрібна нова версія застосунку, щоб додати пробний період?
Для самої пропозиції ні: вона налаштовується в App Store Connect і застосовується під час покупки. Але якщо твій paywall має «7 днів» жорстко прописаними в коді, його доведеться оновити. Читай тривалість із продукту, який повертає магазин, і екран підлаштується сам.
Чи має колишній підписник право на безкоштовний пробний період?
Так, якщо він ніколи не використовував вступну пропозицію в цій групі підписок. Якщо вже скористався, права більше не має, навіть через кілька місяців. Щоб повернути його, Apple пропонує пропозиції для повернення (win-back) і промопропозиції.

