In-App Purchase (IAP) — je mechanismus nákupů v aplikaci, který umožňuje uživatelům nakupovat digitální zboží a služby přímo v mobilní aplikaci. Platformy iOS a Android poskytují vestavěná API pro provádění plateb bez předávání údajů o bankovní kartě vývojáři. Podle dokumentace Apple StoreKit zpracovává IAP ročně přes 500 miliard dolarů transakcí prostřednictvím App Store a Google Play.
Hlavní body
In-App Purchase (IAP) — je technologie umožňující prodej digitálního zboží a služeb v rámci mobilní aplikace. Platby jsou zpracovávány prostřednictvím App Store (na iOS) nebo Google Play (na Android), které si účtují provizi za provedení transakce. Vývojář obdrží prostředky po odečtení provize obchodu.
Apple si účtuje provizi 30% (15% pro malé podniky s příjmem do 1 milionu dolarů). Google Play si také účtuje 30% (15% z prvního 1 milionu dolarů příjmu vývojáře). Od roku 2024 Google testuje program User Choice Billing, který umožňuje vývojářům používat alternativní platební systémy.
IAP je povinný pro prodej digitálního zboží v aplikacích podle zásad App Store a Google Play. Fyzické zboží, služby (objednání taxíku, doručení jídla) a peer-to-peer platby mohou používat platební systémy třetích stran.
App Store a Google Play podporují tři hlavní typy In-App Purchase. Každý typ je určen pro různé modely monetizace. Volba typu produktu ovlivňuje logiku obnovení nákupů, správu předplatného a chování při přeinstalaci aplikace.
Consumable — je zboží, které lze nakupovat opakovaně a které se spotřebovává při používání. Typické příklady: herní měna (mince, diamanty), další životy, zrychlovače, spotřební posilovače. Consumable se neobnovují při přeinstalaci aplikace — vývojář sám spravuje zůstatek každého uživatele na svém serveru.
Non-Consumable — je zboží, které se nakupuje jednou a zůstává trvale dostupné. Příklady: plná verze aplikace, prémiové úrovně, odemknutí filtrů, odstranění reklam. Produkty non-consumable se obnovují prostřednictvím Restore Purchases API: po přeinstalaci může uživatel získat dříve zakoupené zboží zpět bez opětovné platby.
Auto-Renewable Subscription — jsou pravidelné platby za přístup k obsahu nebo službě na určité období (týden, měsíc, rok). Předplatné se automaticky obnovuje, dokud uživatel nezruší v nastavení účtu. Obchody poskytují serverová oznámení (App Store Server Notifications, Google Play Developer Notifications) o změně stavu předplatného: obnovení, vypršení, vrácení peněz.
Nastavení In-App Purchase začíná v panelech vývojáře: App Store Connect pro iOS a Google Play Console pro Android. Pro každý produkt se uvádí identifikátor (Product ID), název, popis, typ a cena v amerických dolarech s automatickým převodem na regionální měny. Po vytvoření produkt prochází moderací obchodu.
V App Store Connect se produkty IAP vytvářejí v sekci Features → In-App Purchases. Pro každý produkt se vybírá typ (consumable, non-consumable, auto-renewable subscription, non-renewing subscription) a vyplňují se lokalizované názvy. Pro předplatná se dodatečně konfigurují skupiny (Subscription Groups) — skupiny vzájemně zaměnitelných předplatných.
V Google Play Console se spravované produkty (managed products) konfigurují v sekci Monetise → Products → In-app products. Google používá termíny Managed Product (obdoba non-consumable) a Subscription. Pro nákupy consumable na Androidu se používá samostatný příznak consume, který resetuje produkt pro opětovný nákup.
Moderace produktů IAP trvá v průměru 24–48 hodin v App Store a několik hodin v Google Play. Změny cen se uplatňují okamžitě bez opětovné moderace. Product ID nelze po vytvoření změnit — lze pouze smazat a znovu vytvořit.
Receipt validation (ověření účtenky) — povinná fáze zpracování In-App Purchase. Klientská aplikace odešle účtenku (receipt) na vlastní server, server ji ověří prostřednictvím API Apple (https://buy.itunes.apple.com) nebo Google (https://androidpublisher.googleapis.com) a teprve po úspěšné validaci přidělí produkt uživateli.
Bez serverového ověření může útočník zfalšovat odpověď obchodu a získat produkt zdarma. Client-side validation je nebezpečná, protože se provádí v prostředí kontrolovaném uživatelem. Serverové ověření zaručuje, že účtenka je autentická a platba proběhla úspěšně. Pro Apple se ověření provádí přes endpoint verifyReceipt (production nebo sandbox), pro Google — přes Android Publisher API. Oba obchody vracejí potvrzení ve formátu JSON.
Apple vrací v účtence údaje o nákupu: product_id, transaction_id, purchase_date, expiration_date (pro předplatná). Google vrací podobná pole přes API Purchases.products.get nebo Purchases.subscriptions.get. Server by měl ukládat transaction_id každé účtenky a odmítat opakované požadavky se stejným ID pro ochranu před replay útoky.
Integrace In-App Purchase vyžaduje připojení platformních knihoven: StoreKit 2 na iOS a Billing Library 7+ na Android. API umožňují vyžádat seznam produktů, zahájit nákup, zpracovat výsledek a obnovit dříve zakoupené produkty.
import StoreKit
func purchaseProduct(productID: String) async throws {
guard let product = try await Product.products(for: [productID]).first else { return }
let result = try await product.purchase()
switch result {
case .success(let verification):
let transaction = try verification.payloadValue
await validateReceipt(transaction)
await transaction.finish()
default:
break
}
}
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingFlowParams
val billingClient = BillingClient.newBuilder(context)
.setListener { billingResult, purchases ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
purchases?.forEach { purchase ->
validateReceipt(purchase)
}
}
}
.build()
val params = BillingFlowParams.newBuilder()
.setProductDetails(productDetails)
.build()
billingClient.launchBillingFlow(activity, params)
const response = await fetch('https://buy.itunes.apple.com/verifyReceipt', {
method: 'POST',
body: JSON.stringify({
'receipt-data': receiptBase64,
'password': 'SHARED_SECRET'
})
})
const data = await response.json()
if (data.status === 0) {
// Účtenka potvrzena — přidělujeme produkt
await grantProduct(data.receipt.product_id)
}
Monetizace prostřednictvím In-App Purchase vyžaduje promyšlenou cenovou strategii a UX. Uživatelé jsou náchylnější k prvnímu nákupu, pokud je jim nabídnut atraktivní startovací balíček (starter pack) za nízkou cenu. Apple a Google doporučují zobrazovat cenu produktu před potvrzením nákupu.
Subscription onboarding — kritická fáze konverze. Ukažte uživateli hodnotu předplatného před žádostí o platbu: bezplatná zkušební doba, srovnání tarifů, seznam výhod. Podle výzkumů zvyšuje bezplatná zkušební doba (free trial) konverzi platících uživatelů o 25–40%.
Restore Purchases je povinný pro produkty non-consumable a předplatná. Tlačítko obnovení by mělo být dostupné v nastavení aplikace nebo na obrazovce platby. Google a Apple mohou odmítnout aplikaci, pokud obnovení nákupů není implementováno pro odpovídající typy IAP.
Grace Period — lhůta odkladu pro předplatná, po kterou uživatel zachovává přístup po neúspěšné platbě. iOS a Android podporují grace period až 30 dnů. Zapnutí grace period snižuje míru odchodu (churn rate) o 10–15%.
A/B testování cen IAP — důležitá praktika monetizace. App Store Connect podporuje místní ceny (Price Tiers) s možností změnit cenu bez opětovné moderace produktu. Google Play Console umožňuje konfigurovat až 5 základních plánů s různými cenami pro jeden předplatitelský produkt. Doporučuje se testovat alespoň dva cenové body: aktuální a nový. Testování se provádí po dobu 2–4 týdnů na vzorku nejméně 1000 uživatelů na každý cenový bod.
Kontrola obchodu a správa odmítnutí — povinná fáze publikování aplikace s IAP. Apple obzvláště pečlivě kontroluje aplikace s automaticky obnovitelnými předplatnými: je třeba poskytnout testovací účet s aktivním předplatným, zobrazit obrazovku zrušení předplatného a implementovat Restore Purchases. Google Play je méně přísný, ale vyžaduje potvrzení práv k digitálnímu obsahu. Doporučuje se přidat poznámku pro recenzenta (Review Notes) s popisem logiky IAP.
Často kladené dotazy
In-App Purchase (IAP) — je mechanismus nákupu digitálního zboží v mobilní aplikaci. Platba je zpracována prostřednictvím App Store nebo Google Play, které si ponechávají provizi 30% (15% pro malé podniky) a převádějí zbytek vývojáři.
Existují tři typy IAP: consumable (spotřební — mince, životy), non-consumable (trvalé — odstranění reklam, plná verze) a auto-renewable subscription (automatické obnovení — přístup k obsahu na období). Non-consumable podporuje obnovení nákupů.
Hlavní metoda ochrany — server-side receipt validation. Klient odešle účtenku na váš server, server ji ověří přes API Apple nebo Google. Bez serverového ověření může útočník zfalšovat odpověď obchodu a získat produkt zdarma.
Nastavení IAP zahrnuje: vytvoření produktů v App Store Connect nebo Google Play Console, připojení StoreKit (iOS) nebo Billing Library (Android), implementaci nákupu a serverové ověření účtenky. Každý produkt prochází moderací obchodu.
Apple si účtuje 30% (15% pro vývojáře s příjmem do 1 milionu dolarů). Google Play si také účtuje 30% (15% z prvního 1 milionu). Od roku 2024 Google testuje alternativní platební systémy prostřednictvím User Choice Billing. Vývojář si může vybrat externího poskytovatele plateb, ale musí platit Googlu servisní poplatek 11–12%.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také