RevenueCat vs StoreKit 2 (kendi altyapın) Karşılaştırması

Çok mağazalı abonelik altyapısını SDK + backend olarak kirala

VS
StoreKit 2 (kendi altyapın)

Apple'ın birinci taraf çerçevesi, ama sunucu tarafını sen yazarsın

16 dk okumaServices

Hızlı Karar

Eşik net: aylık takip edilen gelirin (MTR) $2.500 altındaysa RevenueCat pratikte bedavadır; orada kıyasladığın %1 değil, sıfır maliyet — kendi altyapın bunun yanında hep pahalı. Yalnız App Store'da satan, tek ürünlü, KVKK-hassas üründe saf StoreKit 2 savunulabilir. Çok mağazalıysan RTDN'nin 18 bildirim tipiyle App Store V2 bildirimlerini paralel senkron tutmak pahalıya çıkar; kaba bir başparmak kuralıyla MTR $50.000+ olunca kararı tekrar tart.

RevenueCatStoreKit 2 (kendi altyapın)
Tam sonucu oku

Puan Karşılaştırması

Grafik yükleniyor...

Detaylı Puanlama

Detaylı Puanlama: RevenueCat ve StoreKit 2 (kendi altyapın) — kategori bazında 10 üzerinden puanlar
KategoriRevenueCatStoreKit 2 (kendi altyapın)
Performans
8/10
8/10
Öğrenme Kolaylığı
8/10
5/10
Ekosistem
8/10
6/10
Topluluk
6/10
5/10
İş Pazarı
5/10
6/10
Gelecek
8/10
8/10

Artıları & Eksileri

RevenueCat

Artıları

  • Aylık $2.500 takip edilen gelire (MTR) kadar tamamen ücretsiz, üzeri yalnızca %1
  • App Store + Google Play + Amazon + Stripe + web için tek entitlement modeli
  • SDK'lar MIT lisanslı ve açık kaynak, veri REST API v2 ile dışa aktarılabilir
  • Webhook'lar 5 kez artan gecikmeyle (5-80 dk) otomatik yeniden dener
  • Dashboard'da hazır MRR, Revenue, Active/New Customers metrikleri gelir
  • Resmi migrasyon planı danışmanlığı talep edilebiliyor (RevenueCat ekibiyle özel plan)
  • Paywall, A/B testi ve web-to-app funnel araçları (Growth Tools) hazır geliyor
  • iOS SDK 5.91.0 (23 Eyl 2026) ve Android SDK 10.23.0 (24 Eyl 2026) — haftalık sürüm kadansı

Eksileri

  • $2.500 MTR üzerinde her mağazadan gelir üçüncü bir 'processor'a akıyor (KVKK m.9 değerlendirmesi gerekir)
  • İş mantığın (entitlement/offering modeli) RevenueCat'in soyutlamasına bağlanıyor
  • Paywall ve A/B testi verisi de satın alma verisiyle aynı üçüncü taraf 'processor'da toplanıyor
  • purchases-android reposu purchases-ios'a göre daha küçük bir topluluğa sahip (560 vs 3.070 yıldız)
  • Tek platformlu, basit tek ürünlü uygulamada gereğinden fazla soyutlama getirebilir

En Uygun

App Store + Play + web'de aynı anda satılan abonelik ürünleriAylık takip edilen geliri $2.500'ün altındaki erken aşama uygulamalarPaywall A/B testi ve kohort/LTV analizini hızlı kurmak isteyen küçük ekiplerİade/geri alma ve abonelik durumu senkronizasyonunu elle yazmak istemeyenlerÇoklu platform (iOS+Android+web) tek entitlement kaynağı isteyen ürünler

StoreKit 2 (kendi altyapın)

Artıları

  • SDK ücreti yok — Apple işletim sistemiyle birlikte gelir, ek lisans maliyeti sıfır
  • Gelir/kullanıcı verisi hiçbir üçüncü tarafa akmaz, ek bir 'processor' yok
  • AppTransaction ve makbuzlar App Store tarafından kriptografik olarak imzalanır
  • Vendor lock-in yok — mimari tamamen sende, RevenueCat'e bağımlılık oluşmaz
  • App Store Server API ile 180 günlük (sandbox'ta 30 gün) bildirim geçmişi telafi edilebilir
  • Apple'ın kendi platformunda birinci sınıf destek ve WWDC oturumlarıyla belgelenir

Eksileri

  • Yalnız Apple ekosistemini kapsar; Play tarafı için tamamen ayrı bir entegrasyon (RTDN + Billing Library) gerekir
  • JWS-imzalı yanıtları sunucunda doğrulamak, retry/backoff mantığını kendin yazmak zorundasın
  • App Store Server Notifications V1 kullanımdan kalktı, V2 endpoint'i sunucunda zorunlu
  • Play Billing Library sık güncelleniyor (8.3.0 ve 9.1.0 büyük API eklemeleri, 9.0.0 davranış değişiklikleri) — bakım yükü sürekli
  • Paywall A/B testi, kohort/LTV dashboard'u gibi araçlar sıfırdan yazılmalı
  • Play RTDN'nin 1-22 arasında numaralandırılmış 18 abonelik bildirim tipini App Store V2 bildirimleriyle tek modele indirgemek ayrı bir mühendislik işi

En Uygun

Tek platformlu (yalnızca App Store), basit tek-ürünlü abonelik modelleriGelir verisini hiçbir şekilde üçüncü tarafa aktarmak istemeyen KVKK-hassas uygulamalarZaten olgun bir sunucu ekibi olan, JWS doğrulamayı önemsemeyen orta-büyük şirketlerVendor lock-in'den kaçınmak isteyen, uzun ömürlü kurumsal ürünlerYüksek özelleştirme gerektiren, RevenueCat'in soyutlamasına sığmayan iş kuralları

Kod Karşılaştırması

RevenueCat
// RevenueCat - Entitlement kontrolü ve satın alma (iOS SDK 5.x)
import RevenueCat

func configureRevenueCat() {
    Purchases.logLevel = .debug
    Purchases.configure(withAPIKey: "appl_XXXXXXXXXXXX")
}

func unlockProIfEntitled() async {
    do {
        let customerInfo = try await Purchases.shared.customerInfo()
        if customerInfo.entitlements["pro"]?.isActive == true {
            print("Pro entitlement aktif")
        }
    } catch {
        print("customerInfo hata: \(error)")
    }
}

func purchasePro() async {
    do {
        let offerings = try await Purchases.shared.offerings()
        guard let package = offerings.current?.availablePackages.first else { return }

        let result = try await Purchases.shared.purchase(package: package)
        if result.customerInfo.entitlements["pro"]?.isActive == true {
            print("Satın alma başarılı, pro aktif")
        }
    } catch {
        print("Satın alma hatası: \(error)")
    }
}
StoreKit 2 (kendi altyapın)
// StoreKit 2 - Transaction dinleme ve entitlement kontrolü (kendi altyapın)
import StoreKit

func listenForTransactions() -> Task<Void, Error> {
    Task.detached {
        for await result in Transaction.updates {
            switch result {
            case .verified(let transaction):
                await grantEntitlement(for: transaction)
                await transaction.finish()
            case .unverified(_, let error):
                print("Doğrulanamadı: \(error)")
            }
        }
    }
}

func checkCurrentEntitlement() async -> Bool {
    for await result in Transaction.currentEntitlements {
        guard case .verified(let transaction) = result else { continue }
        if transaction.productID == "pro_monthly" {
            return true
        }
    }
    return false
}

func purchase(product: Product) async throws {
    let result = try await product.purchase()
    switch result {
    case .success(let verification):
        guard case .verified(let transaction) = verification else { return }
        await grantEntitlement(for: transaction)
        await transaction.finish()
    case .userCancelled, .pending:
        break
    @unknown default:
        break
    }
}

func grantEntitlement(for transaction: Transaction) async {
    // Sunucuna JWS'i gönder, App Store Server API ile çapraz doğrula
}

Sonuç

Eşik net: aylık takip edilen gelirin (MTR) $2.500 altındaysa RevenueCat pratikte bedavadır; orada kıyasladığın %1 değil, sıfır maliyet — kendi altyapın bunun yanında hep pahalı. Yalnız App Store'da satan, tek ürünlü, KVKK-hassas üründe saf StoreKit 2 savunulabilir. Çok mağazalıysan RTDN'nin 18 bildirim tipiyle App Store V2 bildirimlerini paralel senkron tutmak pahalıya çıkar; kaba bir başparmak kuralıyla MTR $50.000+ olunca kararı tekrar tart.

Ücretsiz Danışmanlık Al
SSS

Sıkça Sorulan Sorular

Aylık takip edilen gelirin (MTR) $2.500'ün altındaysa RevenueCat pratikte ücretsizdir ve çok mağazalı sunucu tarafı doğrulama, webhook, iade yönetimi işini üstlenir — bu durumda genelde RevenueCat mantıklı. Tek platformlu, basit tek ürünlü ve gelir verisini üçüncü bir tarafa vermek istemeyen bir uygulamada saf StoreKit 2 savunulabilir bir seçenek. Çok mağazalı, büyümekte olan bir üründe kendi altyapını yazmak genelde daha pahalıya çıkar.

Giriş

Google Play'in 30 Haziran 2026'da yürürlüğe giren ücret reformu abonelik muhasebesini bulanıklaştırdı: AEA, Birleşik Krallık ve ABD işlemlerinde otomatik yenilenen abonelikler artık hem yeni hem mevcut kurulumlarda %10 + %5 billing fee ödüyor; diğer pazarlarda (Türkiye dâhil) oran %15 olarak kalıyor (support.google.com). Aynı ürünü App Store ve Play'de satıyorsan muhasebe artık pazara göre değişiyor ve "build vs buy" sorusu somut bir sayıya iniyor: RevenueCat'in ücretsiz eşiği aylık $2.500 takip edilen gelir (MTR), üzerinde yalnızca %1. Seni ilgilendiren soru şu: abonelik altyapını satın mı almalısın (RevenueCat), yoksa Apple'ın StoreKit 2'siyle kendi sunucunu mu yazmalısın? Burada rakip başka bir sağlayıcı değil, senin kendi mühendislik saatlerin. Doğrudan maliyet, sunucu tarafı doğrulama yükü, çok mağazalı tek gerçeklik kaynağı, webhook/iade yönetimi, paywall/analitik, vendor lock-in ve KVKK/veri yerleşimi — yedi eksende ikisini resmi kaynaklara dayanarak karşılaştırıyoruz.

Karşılaştırma Matrisi

Karşılaştırma Matrisi: RevenueCat / StoreKit 2 (kendi altyapın)
ÖzellikRevenueCatStoreKit 2 (kendi altyapın)
Ücretlendirme modeli$2.500 MTR'ye kadar ücretsiz, üzeri %1SDK ücretsiz, sunucu+bakım maliyeti geliştiricide
Çok mağazalı tek entitlement modeliApp Store+Play+Amazon+Stripe+web tek model (Öne çıkan)Her mağaza için ayrı entegrasyon gerekir
Sunucu tarafı JWS doğrulamaRevenueCat sunucusunda çözülür (Öne çıkan)Geliştirici kendi sunucusunda yazar
Webhook/retry mantığı5 deneme, 5-80 dk artan gecikme, otomatik (Öne çıkan)App Store Server Notifications V2 kendin işlersin
Google Play RTDN entegrasyonuSDK içinde soyutlanmış (Öne çıkan)Cloud Pub/Sub + 18 bildirim tipi kendin yazarsın
Paywall A/B testiGrowth Tools (aynı %1 MTR'ye dahil) (Öne çıkan)Yok, sıfırdan kodlanır
Dashboard MRR/kohort/LTVHazır (Revenue, Active/New Customers) (Öne çıkan)Ham API verisinden kendin hesaplarsın
Vendor lock-inSDK açık kaynak (MIT) ama iş mantığı bağımlıYok, mimari tamamen sende (Öne çıkan)
KVKK — üçüncü tarafa veri aktarımıVar (processor rolü, DPA gerekir)Yok (veri Apple-sunucun arası kalır) (Öne çıkan)
SDK lisansıMIT (açık kaynak) (Öne çıkan)Apple mülkiyeti, kapalı kaynak
Açık kaynak topluluk metriği (kıyaslanamaz)3.070 (purchases-ios, 24 Eyl 2026)Ayrı repo yok (Apple framework)
İade (refund) yönetimiWebhook ile otomatik senkron (Öne çıkan)Get Refund History, entitlement'a çevirme senin işin
Platform kapsamıiOS+Android+Amazon+web (Stripe) (Öne çıkan)Yalnız Apple ekosistemi (iOS/iPadOS/macOS)
Bakım yükü (SDK sürüm takibi)Tek SDK bump; mağaza protokol değişiklikleri RevenueCat tarafında (Öne çıkan)Play Billing Library sık güncelleme (8.3→9.0→9.1)
Geçiş/migrasyon desteğiResmi migrasyon planı danışmanlığı talep edilebilir (Öne çıkan)Yok, tamamen kendi planın

Derinlemesine İnceleme

RevenueCat

Genel Bakış

RevenueCat, uygulama içi satın alma ve abonelik yönetimini SDK + backend olarak soyutlayan bir 'abonelik altyapısı' servisidir. purchases-ios ve purchases-android SDK'ları MIT lisansıyla açık kaynak dağıtılır (23-24 Eylül 2026 itibarıyla sırasıyla 5.91.0 ve 10.23.0 sürümlerinde, GitHub API'de mit lisans etiketiyle). Temel değer önerisi: App Store, Google Play, Amazon ve Stripe aboneliklerini tek bir entitlement modeliyle temsil etmek, sunucu tarafı makbuz/imza doğrulamasını ve webhook yeniden-deneme mantığını (5 deneme, 5-80 dakika artan gecikme) kendi altyapısında çözmek. Fiyatlandırması net bir eşiğe dayanır: aylık $2.500 takip edilen gelire (MTR) kadar ücretsiz, üzerinde %1. GDPR/KVKK açısından 'processor' rolünde tanımlanır ve DPA sağlar; bu da gelir verisinin üçüncü bir tarafa aktığı, veri yerleşimi değerlendirmesi gerektiren bir mimari anlamına gelir.

Ekosistem

Paket yöneticisi
Swift Package Manager (iOS) / Gradle-Maven (Android)
Geliştirme ortamı
XcodeAndroid Studio
Popüler kütüphaneler
purchases-iospurchases-androidpurchases-flutterpurchases-react-native
GitHub yıldızı
3,070

StoreKit 2 (kendi altyapın)

Genel Bakış

StoreKit 2, Apple'ın uygulama içi satın alma ve abonelik işlemleri için sunduğu birinci taraf framework'üdür; App Store Server API (sunucudan JWS-imzalı müşteri/işlem sorguları) ve App Store Server Notifications V2 (sunucuya push edilen abonelik yaşam döngüsü olayları) ile tamamlanır. "Build" tarafını seçen bir ekip StoreKit 2'yi ücretsiz kullanır ama sunucu tarafı doğrulamayı, webhook alıcısını, retry mantığını ve — çok mağazalıysa — Google Play'in tamamen farklı protokolü olan Real-time Developer Notifications'ı (Cloud Pub/Sub tabanlı, 1-22 arası numaralandırılmış notificationType kodlarıyla) kendisi yazar ve bakımını sürdürür. Play Billing Library son üç sürümünde (8.3.0, 9.0.0, 9.1.0) dış ödeme ve Billing Choice API'lerini ekledi, 9.0.0 ayrıca davranış değişiklikleri getirdi; yani native yaklaşım "ücretsiz ama bakımsız değil".

Ekosistem

Paket yöneticisi
Xcode ile birlikte gelir (ayrı paket yönetimi yok)
Geliştirme ortamı
Xcode 27
Popüler kütüphaneler
App Store Server Library (Apple resmi, sunucu tarafı JWS doğrulama)

Teknik Analiz

Doğrudan Maliyet: $2.500 Eşiği Neden Somut

RevenueCat'in fiyatlandırması iki kademeli: aylık $2.500 takip edilen gelire (MTR) kadar tamamen ücretsiz, bu eşiği aştığın andan itibaren o ayki izlenen gelirin %1'i kadar ücret başlıyor — gizli katman veya kullanıcı-başı limit yok (revenuecat.com/pricing/). Paywall ve A/B testi araçları aynı %1'in içinde — sayfa kapanışı: "Our entire suite of features comes standard"; Growth Tools ek bir kalem değil. Saf StoreKit 2 tarafında SDK'nın kendisi ücretsizdir ama bu görünür ücretsizlik yanıltıcı: geliştirici, App Store Server API entegrasyonunu, JWS doğrulamasını, webhook alıcısını ve — çok mağazalıysa — Google Play RTDN entegrasyonunu kendi yazar. Bu işin mühendislik-saati karşılığı, MTR onbinlerce dolara çıkana kadar genellikle o %1'i aşar. Sonuç: erken ve orta ölçekli uygulamalarda $2.500 eşiği, "ücretsiz SDK ama pahalı entegrasyon" ile "ücretli SDK ama bedava entegrasyon" arasındaki gerçek dengeyi netleştiriyor. Mağaza komisyonu (Apple: Small Business Program'da %15, üstünde standart oran; Google'da abonelikte AEA/Birleşik Krallık/ABD işlemleri için %10+%5, diğer pazarlarda — Türkiye dâhil — %15) her iki senaryoda da aynı — bu maliyet RevenueCat/StoreKit seçiminden bağımsız.

Sunucu Tarafı Doğrulama Yükü

StoreKit 2 + kendi backend'inde, App Store Server API'nin JWS-imzalı yanıtlarını sunucunda doğrulamak, Get All Subscription Statuses / Get Transaction History / Get Refund History çağrılarını orkestre etmek ve Get Notification History ile 180 günlük (sandbox'ta 30 günlük) kaçırılan bildirim penceresini telafi etmek senin sorumluluğunda (developer.apple.com/documentation/appstoreserverapi). App Store Server Notifications V1 kullanımdan kaldırıldı, V2 endpoint'ini sunucunda zorunlu olarak implemente etmen gerekiyor. RevenueCat bu katmanı SDK + backend olarak soyutlar: sen yalnızca customerInfo().entitlements["pro"].isActive gibi bir sorguyla entitlement durumunu okursun, imza doğrulama ve retry mantığı RevenueCat'in sunucusunda çözülür. İstersen webhook da dinleyebilirsin — başarısız teslimat 5 kez, artan gecikmeyle (5, 10, 20, 40, 80 dakika) otomatik yeniden denenir (revenuecat.com/docs/webhooks). Sen bir geliştirici olarak hangi tarafı seçersen seç, doğrulama mantığının bir yerde yazılması şart; fark, o mantığın senin sunucunda mı yoksa RevenueCat'in sunucusunda mı yaşadığı.

Çok Mağazalı Tek Gerçeklik Kaynağı

RevenueCat açıkça "App Store, Google Play, Amazon ve web abonelikleri arasında tek gerçeklik kaynağı" iddiasında ve dokümanlarında "günde milyarlarca API çağrısı RevenueCat sunucularında durum kontrol ediyor" diyor (revenuecat.com/docs/migrating-to-revenuecat/migration-paths). Entitlement kavramı, aynı projede yer alan tüm uygulamalar arasında paylaşılır (revenuecat.com/docs/getting-started/entitlements) — yani kullanıcı hangi mağazadan satın aldıysa alsın, senin kodun tek bir "pro mu değil mi" sorgusu yapar. Saf StoreKit 2 seçtiğinde bu tekilleştirme senin işin. Apple tarafında App Store Server Notifications V2 kendi bildirim şemasını kullanırken, Google Play tarafında tamamen farklı bir protokol var: Cloud Pub/Sub tabanlı Real-time Developer Notifications, base64 kodlu mesajlar ve 1'den 22'ye kadar giden ayrı bir notificationType numaralandırması (developer.android.com/google/play/billing/rtdn-reference). Bu iki farklı payload şemasını, iki farklı imza doğrulama mantığını ve iki farklı abonelik-durumu temsilini kendi veri modelinde birleştirmek — RevenueCat'in tam olarak çözdüğü problem budur. Tek platformlu (yalnız App Store) kalıyorsan bu maliyet oluşmaz.

Webhook, İade ve Analitik/LTV Araçları

RevenueCat'in webhook event matrisi App Store, Google Play, Amazon, Stripe, Promo, Roku, Paddle ve RevenueCat Billing sütunlarını tek bir formatta normalize eder (revenuecat.com/docs/integrations/webhooks/event-types-and-fields); dashboard'da MRR, Revenue (mağaza kesintisi öncesi brüt, son 28 gün), Active Trials, Active/New Customers gibi metrikler hazır gelir (revenuecat.com/docs/dashboard-and-metrics/overview). Sen bu verileri sıfırdan hesaplamak zorunda kalmazsın. StoreKit 2 + kendi backend'inde bu analitiklerin hiçbiri hazır değil: App Store Server API ve Play Developer API'nin ham verisinden MRR, kohort, LTV gibi metrikleri kendin türetmen gerekir. Paywall A/B testi de aynı şekilde — RevenueCat'in Growth Tools'u hazır bir deney altyapısı sunarken, StoreKit 2'nin kendisi hiçbir paywall deneyi yeteneği içermez; bunu React/SwiftUI tarafında sıfırdan kodlaman gerekir. İade yönetimi tarafında da StoreKit 2 Get Refund History çağrısını sağlar ama senin sunucunda bu bilgiyi entitlement'a çevirecek mantığı sen yazarsın; RevenueCat webhook üzerinden bunu otomatik senkronize eder.

Vendor Lock-in ve Veri Taşınabilirliği

RevenueCat'in SDK'ları (purchases-ios, purchases-android) MIT lisanslı ve açık kaynaktır (GitHub API'de license.key:"mit" — 24 Eylül 2026); kod düzeyinde bir kilitlenme yok. REST API v2 ile müşteri ve işlem verisi dışa aktarılabilir (revenuecat.com/docs/api-v2) ve resmi bir migrasyon danışmanlığı sunuluyor: "RevenueCat ekibinden biriyle çalışarak özel migrasyon planını oluştur" (revenuecat.com/docs/migrating-to-revenuecat/migration-paths). Yine de iş mantığın — entitlement modeli, offering yapısı — RevenueCat'in soyutlamasına bağlanır; bir gün ayrılmak istersen bu modeli native koda "deşifre etmen" gerekir. Saf StoreKit 2 + kendi sunucunda böyle bir geçiş maliyeti hiç oluşmaz, çünkü veri zaten first-party'dir ve taşınacak bir üçüncü taraf yok. Bu, uzun ömürlü kurumsal ürünler veya vendor bağımsızlığını stratejik önceliğe koyan ekipler için StoreKit 2'yi savunulabilir kılan bir gerekçe.

KVKK/Veri Yerleşimi ve Üçüncü Tarafa Gelir Verisi Aktarımı

Bu, iki yaklaşım arasındaki en somut hukuki farktır. RevenueCat kullanıldığında gelir ve kullanıcı verisi bir üçüncü taraf "processor" rolüne akar (revenuecat.com/gdpr/: "RevenueCat is considered a 'processor'"), bir DPA (veri işleme sözleşmesi) imzalanması ve KVKK madde 9 kapsamında yurt dışına aktarım değerlendirmesi yapılması gerekir. Veri silme talepleri ayrı bir e-posta süreciyle ([email protected]) yönetilir — bu, mevcut bir onay/aydınlatma metnine ek madde eklemeyi gerektirebilir. Saf StoreKit 2 + kendi sunucun modelinde veri akışı yalnızca Apple (birinci taraf mağaza, kullanıcının zaten işlem yaptığı taraf) ile senin sunucun arasındadır — ek bir üçüncü taraf veri işlemcisi devreye girmez. Tek platformlu, basit ve gelir verisini hiçbir şekilde dışarı vermek istemeyen bir uygulama için bu, saf StoreKit 2'yi savunulabilir kılan en net gerekçedir. Sen KVKK'ya hassas bir ürün yapıyorsan, bu maddeyi maliyet karşılaştırmasının önüne koymalısın.

Hangi Senaryoda Hangisi

Erken aşama uygulama, aylık takip edilen gelir $2.500'ün altında

Öneri: RevenueCat

Bu eşiğin altında pratikte ücretsiz; sunucu tarafı doğrulama ve webhook yükünü sıfıra indirir, haftalarca sürecek entegrasyonu ortadan kaldırır.

Yalnız App Store'da satılan, tek ürünlü basit abonelik

Öneri: StoreKit 2

Tek mağaza olduğunda çok-mağazalı senkronizasyon problemi yok; Apple'ın birinci taraf çözümü yeterli ve ek bir veri işlemcisi eklemez.

App Store + Google Play'de aynı anda satılan abonelik ürünü

Öneri: RevenueCat

İki mağazanın tamamen farklı webhook/RTDN şemalarını (App Store V2 bildirimleri vs 18 abonelik bildirim tipi) tek bir modele indirgeme işini RevenueCat üstlenir.

Gelir verisini hiçbir üçüncü tarafa aktarmak istemeyen KVKK-hassas ürün

Öneri: StoreKit 2

RevenueCat 'processor' rolünde veri işler ve DPA gerektirir; StoreKit 2 + kendi sunucun modelinde veri yalnız Apple ile sende kalır.

MTR editoryal bir başparmak kuralıyla $50.000+ ve olgun bir backend ekibi var

Öneri: Duruma göre değerlendir

%1 kesinti bu ölçekte ciddi bir tutara çıkar; olgun bir ekip JWS doğrulama ve RTDN entegrasyonunu üstlenebilirse StoreKit 2 + kendi altyapı maliyet avantajı sağlayabilir.

Paywall A/B testi ve kohort/LTV analitiğine hızlı ihtiyaç

Öneri: RevenueCat

Growth Tools ve dashboard hazır geliyor; bunları sıfırdan StoreKit 2 üzerine inşa etmek ayrı bir ürün geliştirme projesidir.

Vendor lock-in'den kaçınmak stratejik öncelik (uzun ömürlü kurumsal ürün)

Öneri: StoreKit 2

İş mantığın tamamen sende kalır; RevenueCat'in entitlement soyutlamasına bağımlı hale gelmezsin.

Yaygın Tuzaklar

  • RevenueCat'i yalnız SDK katmanı sanıp $2.500 eşiğini takip etmemek — MTR aşıldığında beklenmedik %1 kesinti faturaya yansır

    RevenueCat

    Çözüm

    Dashboard'daki Revenue kartını (son 28 gün, brüt) düzenli izle; eşiğe yaklaştığında maliyet projeksiyonunu önceden çıkar.

  • StoreKit 2'de App Store Server Notifications V1'i hâlâ dinlemeye devam etmek — V1 kullanımdan kaldırıldı, bildirim kaçar

    StoreKit 2 (kendi altyapın)

    Çözüm

    Sunucunda V2 endpoint'ini implemente et; Get Notification History ile geçiş sırasında kaçan 180 günlük pencereyi telafi et.

  • Çok mağazalı üründe yalnız App Store tarafını (StoreKit 2) kurup Google Play RTDN'yi 'sonra ekleriz' diye ertelemek

    Her ikisi

    Çözüm

    İki mağaza planlanıyorsa en baştan RevenueCat gibi bir soyutlama katmanı değerlendir; RTDN'nin 18 abonelik bildirim tipini sonradan eklemek zor bir refactor'dur.

  • RevenueCat kullanırken KVKK/DPA değerlendirmesini atlamak — gelir verisi bir processor'a aktığı unutulup aydınlatma metni güncellenmiyor

    RevenueCat

    Çözüm

    RevenueCat'i entegre etmeden önce DPA'yı incele ve KVKK madde 9 kapsamında veri aktarımını gizlilik politikana ekle.

  • RevenueCat webhook'unun her olayı anında ve tek seferde ulaştıracağını varsaymak — başarısız teslimat 5 kez, 5-80 dakika artan gecikmeyle yeniden denenir

    RevenueCat

    Çözüm

    Webhook alıcını idempotent yaz (aynı olay birden çok kez gelebilir) ve entitlement'ın tek gerçeklik kaynağı olarak customerInfo() sorgusunu kullan; webhook'u tetikleyici say, tek kaynak sayma.

Geçiş Kılavuzu

StoreKit 2 (kendi altyapın) → RevenueCat

Tahmini süre: Tek platform, tek ürün: 1-2 hafta. Çok mağazalı, orta ölçekli (aktif kullanıcı 10K-500K): 3-6 hafta (paralel doğrulama dahil).
  1. 11. Mevcut ürün kimliklerini (product ID) ve abonelik gruplarını App Store Connect'ten RevenueCat dashboard'a projeksiyon olarak tanımla
  2. 22. RevenueCat SDK'sını (purchases-ios / purchases-android) projene ekle, API key ile configure et
  3. 33. Mevcut kullanıcıların App Store/Play işlem geçmişini RevenueCat'in restore/aktarım akışıyla eşleştir (resmi migrasyon danışmanlığından faydalan)
  4. 44. Entitlement modelini tanımla ("pro" gibi) ve mevcut sunucu tarafı doğrulama mantığını RevenueCat sorgularıyla (customerInfo().entitlements) değiştir
  5. 55. Webhook'ları kur, kendi App Store Server Notifications V2 / RTDN alıcı kodunu paralel çalıştırarak geçiş süresince çapraz doğrula
  6. 66. Paralel çalıştırma periyodu sonunda eski sunucu tarafı doğrulama kodunu kaldır, RevenueCat'i tek gerçeklik kaynağı yap
  7. 77. Dashboard metriklerini (MRR, Active/New Customers) mevcut analitik altyapınla karşılaştırarak doğrula

Gelecek Öngörüsü

RevenueCat

RevenueCat SDK'ları aktif geliştiriliyor — iOS SDK 23 Eylül 2026'da 5.91.0, Android SDK 24 Eylül 2026'da 10.23.0 sürümünü yayınladı (github.com/RevenueCat), yani haftalık kadansta güncelleme geliyor. Google Play'in 30 Haziran 2026 ücret reformu sonrası çok-mağazalı muhasebe karmaşıklaştığı için RevenueCat'in 'tek gerçeklik kaynağı' konumlanması güçleniyor. Şirketin resmi migrasyon danışmanlığı ve REST API v2 genişlemesi, büyüyen ekiplerin ölçeklendikçe RevenueCat'te kalmasını kolaylaştırma yönünde bir trend gösteriyor.

StoreKit 2 (kendi altyapın)

Apple, StoreKit ve App Store Server API/Notifications'ı her yıl WWDC'de güncelliyor; Xcode 27 ve iOS 27'nin 14 Eylül 2026'da genel kullanıma çıkmasıyla platform güncel tutuluyor. Google Play tarafında Billing Library son üç sürümde (8.3.0→9.0.0→9.1.0) dış ödeme desteği ve Billing Choice program gibi büyük API değişiklikleri getirdi — bu da native yaklaşımı seçenlerin sürekli bir bakım yüküyle karşı karşıya kalacağını gösteriyor. App Store Server Notifications V1'in kullanımdan kaldırılıp V2'nin zorunlu hale gelmesi, Apple'ın sunucu tarafı sözleşmesini de aktif olarak evrimleştirdiğini gösteriyor — native tarafı seçenler bu değişiklikleri sürekli takip etmek zorunda.

Altın Bilgi

"Build vs buy" sorusu genelde yanlış çerçeveleniyor: mesele "hangisi daha iyi" değil, "hangi işi kim yapacak". RevenueCat'i seçtiğinde JWS doğrulama, webhook retry mantığı ve Play RTDN'nin 18 abonelik bildirim tipini tek modele indirgeme işini devrediyorsun — karşılığında $2.500 MTR üzerinde %1 ödüyor ve gelir verini bir processor'a açıyorsun. StoreKit 2'yi seçtiğinde aynı işi kendine alıyorsun: üçüncü taraf veri aktarımından kaçınıyorsun, ama Play Billing Library'nin sık güncellenen API'lerini takip etme yükünü üstleniyorsun. Sen bu kararı verirken asıl sorman gereken, ekibinin büyüklüğü değil hangi maliyeti sürekli bakımda tutmaya değer bulduğun: mühendislik saatini mi, gelir yüzdeni mi.

İlgili Blog Yazıları

Tüm Yazıları Gör

İlgili İçerik