Adapty React Native SDK'yı bir Expo projesine yükleyin ve yapılandırın
Bu kılavuz, Adapty React Native SDK’nın bir Expo projesine kurulumunu ve yapılandırılmasını ele almaktadır.
Saf React Native (Expo olmadan) kullanıyorsanız, bunun yerine React Native kurulum kılavuzunu takip edin.
Adapty SDK, React Native uygulamanıza sorunsuz entegrasyon için iki temel modül içerir:
- Core Adapty: Bu modül, Adapty’nin uygulamanızda düzgün çalışması için gereklidir.
- AdaptyUI: Bu modül, flow’ları ve eski builder paywall’larını render eder. AdaptyUI, core modülüyle birlikte otomatik olarak etkinleştirilir.
React Native uygulamanızda IAP’yi nasıl uygulayacağınıza dair eksiksiz bir eğitim için şuraya göz atabilirsiniz.
Adapty SDK’nın bir Expo uygulamasına nasıl entegre edildiğine dair gerçek dünya örneği görmek ister misiniz? Örnek uygulamalarımıza göz atın:
- Gerçek satın almalar ve Paywall Builder dahil tam işlevsellik için Expo dev build örneği
- Mock mod ile test etmek için Expo Go & Web örneği
Tam uygulama adımları için videoyu da izleyebilirsiniz:
Gereksinimler
| Gereksinim | Sürüm |
|---|---|
| React Native | 0.75 veya üzeri |
| iOS | 15.0 veya üzeri |
| Swift | 6.2 veya üzeri, Xcode 26 ile birlikte gelir |
SDK’yı yüklemek, Adapty kurulumunun 5. adımıdır. Uygulamanızda satın almalar çalışmadan önce uygulamanızı mağazalara bağlamanız, ardından Adapty Kontrol Paneli’nde ürünler, bir paywall ve bir placement oluşturmanız gerekir. Hızlı başlangıç kılavuzu tüm gerekli adımları anlatmaktadır.
Bağımlılıklar
Adapty SDK, Android’de şu Google Play Billing Library sürümleriyle çalışır:
| Adapty SDK sürümü | Billing Library sürümü |
|---|---|
| 3.17.0 ve sonrası | v8 |
| 3.15.0–3.15.6 | Varsayılan olarak v7, başka bir bağımlılık yükseltirse v8 |
Bir Billing Library sürümüyle uyumlu olmak, Adapty’nin o sürümde Google’ın sunduğu her özelliği desteklediği anlamına gelmez. Yeni bir Google Play faturalandırma özelliği benimsemeden önce Play Store’daki Ürün bölümüne bakın.
Adapty SDK’yı Yükleyin
Adapty React Native SDK v4 ve sonraki sürümleri, yerel iOS SDK’larını (Adapty, AdaptyUI, AdaptyPlugin) Swift paketi olarak sunar. CocoaPods hâlâ bunları bir Expo projesine yükler; ancak Swift paketleri dinamik olarak bağlandığından, derlemenizin dinamik framework’lere ihtiyacı vardır — bkz. Adapty SDK v4 için dinamik framework’leri etkinleştirin.
Her zaman SDK’nın mevcut en son sürümünü yüklemenizi öneririz — en yeni kararlılık düzeltmelerini ve iyileştirmelerini içerir.
Expo Dev Client (özel bir geliştirme derlemesi), Adapty’yi bir Expo projesinde kullanmak için gereklidir.
Expo Go özel native modülleri desteklemediğinden, yalnızca UI/mantık geliştirme amacıyla mock modunda kullanabilirsiniz (gerçek satın alma işlemi ve AdaptyUI/Paywall Builder render’ı yoktur).
-
Adapty SDK’yı yükleyin:
npx expo install react-native-adapty npx expo prebuild -
EAS veya yerel derleme kullanarak uygulamanızı geliştirme için derleyin:
-
Geliştirme sunucusunu başlatın:
npx expo start --dev-client
Adapty SDK v4 için dinamik framework’leri etkinleştirin
Flow desteği ekleyen React Native SDK 4.0, React Native 0.75 veya üzeri gerektirir. SDK’yı yükleyin:
npx expo install react-native-adapty@^4.0.0
v4, yerel iOS SDK’larını (Adapty, AdaptyUI, AdaptyPlugin) CocoaPods alt bağımlılıkları yerine Swift paketi olarak çeker (CocoaPods’un spec deposu Aralık 2026’da salt okunur hale geliyor). Swift paketleri dinamik olarak bağlanır; bunu Expo’da expo-build-properties eklentisiyle etkinleştirirsiniz. app.json (veya app.config.js) dosyanıza ekleyin:
{
"expo": {
"plugins": [
[
"expo-build-properties",
{
"ios": {
"useFrameworks": "dynamic"
}
}
]
]
}
}
Ardından eklentiyi yükleyin ve native projeyi yeniden oluşturun:
npx expo install expo-build-properties
npx expo prebuild --clean
iOS derlemesi 'React/RCTBridge.h' file not found hatasıyla başarısız olursa, sorun giderme bölümüne bakın.
Tam migration için Adapty React Native SDK’yı v4’e geçirin sayfasına bakın.
Adapty SDK’nın Adapty modülünü etkinleştirme
Public SDK Key’inizi almak için:
- Adapty Kontrol Paneli’ne gidin ve App settings → General sayfasına gidin.
- Api keys bölümünden Public SDK Key’i kopyalayın (Secret Key’i değil).
- Koddaki
"YOUR_PUBLIC_SDK_KEY"ifadesini değiştirin.
Ya da Adapty CLI kullanarak programatik olarak alın:
npm install -g adapty
adapty auth login
adapty apps list
Ya da doğrudan:
npx adapty auth login
adapty apps list
- Adapty başlatma işlemi için Public SDK key kullandığınızdan emin olun; Secret key yalnızca sunucu taraflı API için kullanılmalıdır.
- SDK key’leri her uygulama için benzersizdir, bu nedenle birden fazla uygulamanız varsa doğru olanı seçtiğinizden emin olun.
Adapty’yi etkinleştirmek için aşağıdaki kodu App.tsx dosyasına kopyalayın:
adapty.activate('YOUR_PUBLIC_SDK_KEY');
Diğer Adapty SDK metodlarını çağırmadan önce activate işleminin tamamlanmasını bekleyin. Tam sıralama için React Native SDK’da çağrı sırası sayfasına bakın.
Şimdi uygulamanızda paywallları ayarlayın:
- Flow & Paywall Builder kullanıyorsanız, hızlı başlangıç kılavuzunu takip edin.
- Kendi paywall UI’ınızı oluşturuyorsanız, özel paywall’lar için hızlı başlangıç kılavuzuna bakın.
Geliştirme ortamında aktivasyon hatalarını önlemek için ipuçlarına bakın.
AdaptyUI modülünü etkinleştirme
Flow & Paywall Builder kullanmayı planlıyorsanız AdaptyUI modülüne ihtiyacınız vardır. Bu modül, çekirdek modülü etkinleştirdiğinizde otomatik olarak etkinleşir; başka bir şey yapmanıza gerek yoktur.
İsteğe bağlı kurulum
Günlükleme
Günlük sistemini ayarlayın
Adapty, neler olduğunu anlamanıza yardımcı olmak için hataları ve diğer önemli bilgileri kaydeder. Aşağıdaki seviyeler mevcuttur:
| Level | Description |
|---|---|
error | Yalnızca hatalar loglanır |
warn | Hatalar ve SDK’dan gelen kritik hatalara yol açmayan ancak dikkat edilmesi gereken mesajlar loglanır |
info | Hatalar, uyarılar ve çeşitli bilgi mesajları loglanır |
verbose | Hata ayıklama sırasında işe yarayabilecek her türlü ek bilgi (fonksiyon çağrıları, API sorguları vb.) loglanır |
Adapty yapılandırmasından önce veya yapılandırma sırasında uygulamanızda log seviyesini ayarlayabilirsiniz:
// Set log level before activation
// 'verbose' is recommended for development and the first production release
adapty.setLogLevel('verbose');
// Or set it during configuration
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
logLevel: 'verbose',
});
Veri politikaları
Adapty, siz açıkça göndermediğiniz sürece kullanıcılarınızın kişisel verilerini saklamaz. Ancak mağaza veya ülke yönergelerine uymak için ek veri güvenliği politikaları uygulayabilirsiniz.
IP adresi toplama ve paylaşımını devre dışı bırakma
Adapty modülünü etkinleştirirken, kullanıcı IP adresi toplama ve paylaşımını devre dışı bırakmak için ipAddressCollectionDisabled değerini true olarak ayarlayın. Varsayılan değer false’tur.
Kullanıcı gizliliğini artırmak, bölgesel veri koruma düzenlemelerine (GDPR veya CCPA gibi) uymak ya da IP tabanlı özellikler uygulamanız için gerekli değilse gereksiz veri toplamayı azaltmak için bu parametreyi kullanabilirsiniz.
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
ipAddressCollectionDisabled: true,
});
Reklam kimliği toplama ve paylaşımını devre dışı bırakma
Adapty modülünü etkinleştirirken, reklam tanımlayıcılarının toplanmasını devre dışı bırakmak için ios.idfaCollectionDisabled (iOS) veya android.adIdCollectionDisabled (Android) değerini true olarak ayarlayın. Varsayılan değer false’tur.
Bu parametreyi; App Store/Play Store politikalarına uymak, App Tracking Transparency isteğini tetiklemekten kaçınmak veya uygulamanız reklam ID’lerine dayalı attribution ya da analitik gerektirmiyorsa kullanabilirsiniz.
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
ios: {
idfaCollectionDisabled: true,
},
android: {
adIdCollectionDisabled: true,
},
});
AdaptyUI için medya önbelleği yapılandırmasını ayarlama
AdaptyUI, performansı artırmak ve ağ kullanımını azaltmak için medyayı (resimler ve videolar gibi) varsayılan olarak önbelleğe alır. Özel bir yapılandırma sağlayarak önbellek ayarlarını özelleştirebilirsiniz.
Varsayılan önbellek ayarlarını geçersiz kılmak için mediaCache kullanın:
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
mediaCache: {
memoryStorageTotalCostLimit: 200 * 1024 * 1024, // Optional: memory cache size in bytes
memoryStorageCountLimit: 2147483647, // Optional: max number of items in memory
diskStorageSizeLimit: 200 * 1024 * 1024, // Optional: disk cache size in bytes
},
});
| Parametre | Gerekli | Açıklama |
|---|---|---|
| memoryStorageTotalCostLimit | isteğe bağlı | Bellekteki toplam önbellek boyutu (bayt cinsinden). Varsayılan değer platforma göre değişir. |
| memoryStorageCountLimit | isteğe bağlı | Bellek deposundaki öğe sayısı limiti. Varsayılan değer platforma göre değişir. |
| diskStorageSizeLimit | isteğe bağlı | Diskteki dosya boyutu limiti (bayt cinsinden). Varsayılan değer platforma göre değişir. |
Yerel access level’ları etkinleştirin (Android)
Varsayılan olarak yerel access level’lar iOS’ta etkin, Android’de devre dışıdır. Android’de de etkinleştirmek için localAccessLevelAllowed değerini true olarak ayarlayın:
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
android: {
localAccessLevelAllowed: true,
},
});
Yedekten geri yüklemede verileri temizleyin
clearDataOnBackup değeri true olarak ayarlandığında SDK, uygulamanın bir iCloud yedeğinden geri yüklendiğini algılar ve önbelleğe alınmış profil bilgileri, ürün ayrıntıları ve paywalllar dahil olmak üzere yerel olarak depolanan tüm SDK verilerini siler. SDK ardından temiz bir durumla başlatılır. Varsayılan değer false’tur.
Yalnızca yerel SDK önbelleği silinir. Apple ile işlem geçmişi ve Adapty sunucularındaki kullanıcı verileri değişmeden kalır.
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
ios: {
clearDataOnBackup: true
},
});
Adapty Attribution’ı Etkinleştirme
Bu parametre SDK 4.1 sürümünden itibaren kullanılabilir.
Adapty Attribution kullanıyorsanız, SDK’yı etkinleştirirken adaptyAttributionEnabled değerini true olarak ayarlayın. Varsayılan değer false’tur: bu parametre olmadan SDK, kurulumları kaydetmez veya kurulum ayrıntılarını uygulamanıza iletmez. SDK 4.1’in altındaki sürümlerde Adapty Attribution otomatik olarak etkinleştirilir.
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
adaptyAttributionEnabled: true,
});
Geliştirme ortamı ipuçları
Expo Go / Expo Web için mock mod kurulumu
Expo Go ve Expo Web ortamları, Adapty’nin native modüllerine erişemez. Uygulamanızın arayüzünü ve paywall mantığını geliştirip test edebilmek için çalışma zamanı hatalarından kaçınmak amacıyla Adapty, mock mod sunar.
Mock mod, gerçek satın almaları test etmek için kullanılan bir araç değildir:
- App Store / Google Play satın alma flow’larını açmaz ve gerçek işlem oluşturmaz.
- Flow’ları veya eski builder paywalllarını (AdaptyUI) render etmez.
- Adapty’nin native modülleri tamamen devre dışı bırakılır—Xcode/Android derlemesinde eksik native SDK dosyaları veya geçersiz bir API anahtarı bile hata tetiklemez.
Gerçek satın almaları ve Paywall Builder paywalllarını test etmek için, mock modun otomatik olarak devre dışı bırakıldığı bir Expo Dev Client / production build kullanın.
Varsayılan olarak, SDK Expo Go ve web ortamlarını otomatik olarak algılar ve sahte mod’u etkinleştirir. Sahte verileri özelleştirmek istemiyorsanız herhangi bir yapılandırma yapmanıza gerek yoktur.
Sahte mod etkinken:
- Tüm Adapty metodları, Adapty sunucularına ağ isteği göndermeksizin sahte veriler döndürür.
- Varsayılan olarak, başlangıçtaki sahte profilin aktif aboneliği yoktur.
- Varsayılan olarak,
makePurchase(...)başarılı bir satın alma işlemini simüle eder ve premium erişim sağlar.
Aktivasyon sırasında mockConfig kullanarak mock verileri özelleştirebilirsiniz. Konfigürasyon formatı ve desteklenen parametreler için buraya bakın.
try {
await adapty.activate('YOUR_PUBLIC_SDK_KEY', {
mockConfig: {
// Customize the initial mock profile (optional)
},
});
} catch (error) {
console.error('Failed to activate Adapty SDK:', error);
}
SDK metodlarını aktivasyondan önce çağırmanız gerekiyorsa (örneğin isActivated() veya setLogLevel()), activate() öncesinde enableMock() kullanın. Bridge zaten başlatılmışsa bu metod hiçbir şey yapmaz.
adapty.enableMock(); // İsteğe bağlı: mock verilerini özelleştirmek için mockConfig geçebilirsiniz
// Artık aktivasyondan önce metodları çağırabilirsiniz
await adapty.activate('YOUR_PUBLIC_SDK_KEY');
Geliştirme amacıyla SDK aktivasyonunu geciktirme
Adapty, SDK etkinleştirildiğinde tüm gerekli kullanıcı verilerini önceden alarak daha hızlı ve güncel veri erişimi sağlar.
Ancak bu durum, geliştirme sırasında sıkça kimlik doğrulama isteyen iOS simülatöründe sorun çıkarabilir. Adapty, StoreKit kimlik doğrulama akışını kontrol edemese de SDK’nın güncel kullanıcı verisi almak için yaptığı istekleri erteleyebilir.
__debugDeferActivation özelliğini etkinleştirdiğinizde, activate çağrısı bir sonraki Adapty SDK çağrısına kadar bekletilir. Bu sayede kimlik doğrulama verisi gerekmiyorsa gereksiz istemlerle karşılaşmazsınız.
Bu özelliğin yalnızca geliştirme amaçlı kullanım için tasarlandığını belirtmek önemlidir; zira tüm olası kullanıcı senaryolarını kapsamaz. Üretim ortamında aktivasyon geciktirilmemelidir; gerçek cihazlar genellikle kimlik doğrulama verilerini hatırlar ve kullanıcıdan tekrar tekrar kimlik bilgisi girmesini istemez.
Kullanım için önerilen yaklaşım şöyledir:
try {
adapty.activate('PUBLIC_SDK_KEY', {
__debugDeferActivation: isSimulator(), // 'isSimulator' herhangi bir 3. parti kütüphaneden
});
} catch (error) {
console.error('Adapty SDK etkinleştirilemedi:', error);
// Uygulamanız için hatayı uygun şekilde ele alın
}
React Native’in Fast Refresh özelliğinde SDK etkinleştirme hatalarını giderme
Adapty SDK ile React Native üzerinde geliştirme yaparken şu hatayla karşılaşabilirsiniz: Adapty can only be activated once. Ensure that the SDK activation call is not made more than once.
Bu durum, React Native’in hızlı yenileme (fast refresh) özelliğinin geliştirme sırasında birden fazla aktivasyon çağrısını tetiklemesinden kaynaklanır. Bunu önlemek için __ignoreActivationOnFastRefresh seçeneğini __DEV__ (React Native’in geliştirme modu bayrağı) olarak ayarlayın.
try {
adapty.activate('PUBLIC_SDK_KEY', {
__ignoreActivationOnFastRefresh: __DEV__,
});
} catch (error) {
console.error('Failed to activate Adapty SDK:', error);
// Handle the error appropriately for your app
}
Bu seçenek etkinleştirildiğinde, SDK zaten aktive edilmişse tüm aktivasyon çağrısını atlar; bu nedenle aktivasyon parametrelerindeki değişiklikler hızlı yenileme sırasında geçerli olmaz. Yeni aktivasyon parametrelerini uygulamak için uygulamayı tamamen kapatıp yeniden başlatın.
Sorun giderme
Minimum iOS sürümü hatası
iOS için derleme yaparken, minimum iOS sürümü veya dağıtım hedefiyle ilgili bir hata görebilirsiniz. Adapty iOS 15.0+ gerektirir.
Expo, iOS projesini (Podfile dahil) expo prebuild sırasında oluşturduğundan, Podfile’ı doğrudan düzenlememelisiniz. Bunun yerine, dağıtım hedefini expo-build-properties yapılandırma eklentisi aracılığıyla ayarlayın.
-
Eklentiyi yükleyin:
npx expo install expo-build-properties -
iOS dağıtım hedefini ayarlamak için Expo yapılandırmanızı (
app.jsonveyaapp.config.js) güncelleyin:
{
"expo": {
// ...other Expo config...
"plugins": [
[
"expo-build-properties",
{
"ios": {
// Adapty requires iOS 15.0+.
"deploymentTarget": "15.0"
}
}
],
]
}
}
- Yerel iOS projesini yeniden oluşturun ve yeniden derleyin:
npx expo prebuild --clean
npx expo run:ios # or `eas build -p ios` on your CI
Android Auto Backup manifest çakışması
Android Auto Backup’ı yapılandıran birden fazla SDK (Adapty, AppsFlyer veya expo-secure-store gibi) ile Expo kullanırken, bir manifest birleştirme çakışmasıyla karşılaşabilirsiniz.
Tipik bir hata şöyle görünür: Manifest merger failed : Attribute application@fullBackupContent value=(@xml/secure_store_backup_rules) from AndroidManifest.xml:24:248-306 is also present at [io.adapty:android-sdk:3.12.0] AndroidManifest.xml:9:18-70 value=(@xml/adapty_backup_rules).
Bu çakışmayı çözmek için Adapty eklentisinin Android yedekleme yapılandırmasını yönetmesine izin vermeniz gerekiyor.
Projeniz aynı zamanda expo-secure-store kullanıyorsa, çakışmayı önlemek için kendi yedekleme kurulumunu devre dışı bırakın.
app.json dosyanızı şu şekilde yapılandırın:
{
"expo": {
"plugins": [
["react-native-adapty", { "replaceAndroidBackupConfig": true }],
["expo-secure-store", { "configureAndroidBackup": false }]
]
}
}
replaceAndroidBackupConfig seçeneği varsayılan olarak false’tur. Etkinleştirildiğinde, Adapty eklentisinin Android yedekleme kurallarını yönetmesine olanak tanır.
expo-secure-store kullanıyorsanız uyarıları önlemek için "configureAndroidBackup": false ekleyin; çünkü SecureStore’un yedekleme yapılandırması artık Adapty tarafından yönetilecektir.
Bu kurulum yalnızca Adapty, AppsFlyer ve expo-secure-store için yedekleme gereksinimlerini karşılar. Projenizdeki diğer kütüphaneler özel yedekleme kuralları tanımlıyorsa, bunları manuel olarak yapılandırmanız gerekir.
iOS derlemesi 'React/RCTBridge.h' file not found hatasıyla başarısız oluyor
Adapty SDK v4 için dinamik framework’ler etkinleştirildiğinde, iOS derlemesi expo-updates, @expo/ui veya Objective-C kaynaklarına sahip başka bir pakette başarısız olabilir:
error: 'React/RCTBridge.h' file not found
expo-modules-autolinking paketindeki (bir expo bağımlılığı) bir hata bu soruna yol açmaktadır. Etkilenen sürümler 57.0.5–57.0.9 (Expo SDK 57) ve 56.0.19–56.0.21 (Expo SDK 56)‘dır; hata 57.0.10 ve 56.0.22’de giderilmiştir.
Derlemeyi düzeltmek için expo-modules-autolinking’i düzeltilmiş sürüme güncelleyin ve native projeyi yeniden oluşturun:
npm update expo-modules-autolinking
npx expo prebuild
Expo SDK’nız için düzeltilmiş sürüm henüz mevcut değilse, bunun yerine React Native’i kaynaktan derleyin. Bu yöntem, iOS derlemelerinin daha uzun sürmesi pahasına hatayı aşmanızı sağlar:
{
"expo": {
"plugins": [
[
"expo-build-properties",
{
"ios": {
"useFrameworks": "dynamic",
"buildReactNativeFromSource": true
}
}
]
]
}
}