Adapty SDK'yı saf bir React Native projesine yükleyin ve yapılandırın
Bu kılavuz yalnızca saf React Native (Expo olmayan) projeleri için geçerlidir. Expo kullanıyorsanız, bunun yerine Expo 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 zorunludur.
- AdaptyUI: Bu modül, eski builder paywalllarına ek olarak flow’ları da render eder. AdaptyUI, core modülüyle birlikte otomatik olarak etkinleştirilir.
Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğine dair gerçek dünya örneği görmek ister misiniz? Paywall’ları görüntüleme, satın alma yapma ve diğer temel işlevleri içeren tam kurulumu gösteren örnek uygulamalarımıza göz atın.
Gereksinimler
| Gereksinim | Sürüm |
|---|---|
| React Native | 0.75 veya üzeri. React Native’in SPM entegrasyonu 0.87 veya üzeri gerektirir. |
| 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 uyumluluk, Adapty’nin Google’ın o sürümde 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 sayfasına bakın.
Adapty SDK’yı Yükleyin
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.
Paketi projenize ekleyin:
# using npm
npm install react-native-adapty
# or using yarn
yarn add react-native-adapty
iOS projenizi kurun
Adapty, yerel iOS SDK’larını (Adapty, AdaptyUI, AdaptyPlugin) yalnızca Swift paketi olarak yayınlamaktadır — v4 ile CocoaPods dağıtımı kaldırıldı (CocoaPods spec deposu Aralık 2026’da salt okunur hale geliyor). Her iki seçenek de bu Swift paketlerini yükler; aralarındaki fark yalnızca kurulumu yöneten araçtır.
- CocoaPods (varsayılan, SDK 4.0 ve üzeri): iOS projeniz
Podfile’ını korur ve React Native’inspm_dependencyyardımcısı, Adapty’nin Swift paketlerini Pods projesine ekler. Swift paketleri dinamik olarak bağlandığından, Podfile’ın dinamik framework’lere geçmesi gerekir. - React Native’in SPM entegrasyonu (SDK 4.1 ve üzeri): iOS projeniz CocoaPods’u bırakır ve React Native, Swift paketlerini Adapty’nin sağladığı
Package.swiftmanifestinden kendisi çözer. React Native bu entegrasyonu 0.87’de önizleme olarak ekledi ve henüz production ortamı için önermemektedir.
Adapty SDK’nın Adapty modülünü etkinleştirin
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');
Başka herhangi bir Adapty SDK metodunu çağırmadan önce activate işleminin tamamlanmasını bekleyin. Tam sıra 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 arayüzü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ştirin
Flow & Paywall Builder kullanmayı planlıyorsanız AdaptyUI modülüne ihtiyacınız vardır. Bu modül, core 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ükleme sistemini kurun
Adapty, neler olduğunu anlamanıza yardımcı olmak için hataları ve diğer önemli bilgileri günlüğe kaydeder. Aşağıdaki seviyeler mevcuttur:
| Level | Description |
|---|---|
error | Yalnızca hatalar kaydedilir |
warn | Hatalar ve SDK’dan gelen kritik hatalara yol açmayan ancak dikkat edilmesi gereken mesajlar kaydedilir |
info | Hatalar, uyarılar ve çeşitli bilgi mesajları kaydedilir |
verbose | Fonksiyon çağrıları, API sorguları gibi hata ayıklama sırasında işe yarayabilecek tüm ek bilgiler kaydedilir |
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, açıkça göndermediğiniz sürece kullanıcılarınızın kişisel verilerini saklamaz; ancak mağaza veya ülke gerekliliklerine 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ı özelliklere ihtiyaç duymadığınız durumlarda 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 istemini tetiklemekten kaçınmak veya uygulamanız reklam kimliklerine dayalı attribution ya da analitik gerektirmiyorsa kullanın.
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
ios: {
idfaCollectionDisabled: true,
},
android: {
adIdCollectionDisabled: true,
},
});
AdaptyUI için medya önbellek yapılandırmasını ayarlayın
AdaptyUI, varsayılan olarak performansı artırmak ve ağ kullanımını azaltmak için medyayı (resimler ve videolar gibi) ö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 | Zorunlu | 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 depolamasının öğe sayısı sınırı. Varsayılan değer platforma göre değişir. |
| diskStorageSizeLimit | isteğe bağlı | Diskteki dosya boyutu sınırı (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,
},
});
Yedekleme geri yüklemede verileri temizleyin
clearDataOnBackup değeri true olarak ayarlandığında SDK, uygulamanın iCloud yedeğinden geri yüklendiğini algılar ve önbelleğe alınmış profil bilgileri, ürün ayrıntıları ve paywall’lar dahil tüm yerel 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 olan 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’dur: bu parametre olmadan SDK, kurulumları kaydetmez veya uygulama kurulum bilgilerini iletmez. SDK 4.1 öncesi sürümlerde Adapty Attribution otomatik olarak etkinleştirilir.
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
adaptyAttributionEnabled: true,
});
Geliştirme ortamı ipuçları
Geliştirme amaçlı SDK aktivasyonunu geciktirme
Adapty, SDK aktivasyonu sırasında gerekli tüm kullanıcı verilerini önceden alarak daha hızlı erişim sağlar.
Ancak bu durum, geliştirme sırasında sık sık kimlik doğrulama isteyen iOS simülatöründe sorun yaratabilir. 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ştirerek, bir sonraki Adapty SDK çağrısını yapana kadar aktivasyon çağrısı bekletilir. Bu, ihtiyaç duyulmadığında kimlik doğrulama verileri için gereksiz istemlerden kaçınmanızı sağlar.
Bu özelliğin yalnızca geliştirme amaçlı kullanıma yönelik olduğunu belirtmek önemlidir; zira tüm olası kullanıcı senaryolarını kapsamaz. Prodüksiyonda aktivasyon geciktirilmemelidir; gerçek cihazlar genellikle kimlik doğrulama verilerini hatırlar ve kimlik bilgilerini tekrar tekrar sormaz.
İşte önerilen kullanım yaklaşımı:
try {
adapty.activate('PUBLIC_SDK_KEY', {
__debugDeferActivation: isSimulator(), // herhangi bir 3. taraf kütüphanesinden 'isSimulator'
});
} 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’de 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; dolayısıyla aktivasyon parametrelerinde yapılan değişiklikler hızlı yenilemede geçerli olmaz. Yeni aktivasyon parametrelerini uygulamak için uygulamayı tamamen kapatıp yeniden başlatın.
Yerel test için mock modunu ayarlayın
Yerel geliştirme ve test süreçlerinde, sandbox App Store/Google Play hesaplarına ihtiyaç duymadan iterasyonu hızlandırmak için mock modunu etkinleştirebilirsiniz. Mock modu, Adapty’nin yerel modüllerini tamamen devre dışı bırakarak simüle edilmiş veriler döndürür.
Mock modu, gerçek satın almaları test etmek için 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 paywall’larını (AdaptyUI) render etmez.
- Adapty’nin yerel modülleri tamamen devre dışı bırakılır—Xcode/Android derlemesinde eksik yerel SDK dosyaları veya geçersiz bir API anahtarı bile hata tetiklemez.
- Adapty’nin sunucularına hiçbir veri gönderilmez.
Gerçek satın almaları ve Paywall Builder paywall’larını test etmek için mock modunu devre dışı bırakın ve sandbox hesapları kullanın.
Mock modunu etkinleştirmek için enableMock değerini true olarak ayarlayın:
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
enableMock: true,
});
Mock modu etkinken:
- Tüm Adapty metodları, Adapty sunucularına ağ isteği göndermeden sahte veriler döndürür.
- Varsayılan olarak, başlangıç mock profili aktif abonelik içermez.
- Varsayılan olarak,
makePurchase(...)başarılı bir satın alma simüle eder ve premium erişim sağlar.
Mock verilerini, aktivasyon sırasında mockConfig kullanarak özelleştirebilirsiniz. Yapılandırma 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);
}
Aktivasyondan önce SDK metodlarını çağırmanız gerekiyorsa (örneğin isActivated() veya setLogLevel()), activate() öncesinde enableMock() kullanın. Köprü zaten başlatılmışsa bu metod hiçbir şey yapmaz.
adapty.enableMock(); // Optional: pass mockConfig to customize mock data
// Now you can call methods before activation
await adapty.activate('YOUR_PUBLIC_SDK_KEY');
Sorun giderme
Minimum iOS sürümü hatası
Minimum iOS sürümü hatası alırsanız, Podfile’ınızı güncelleyin:
-platform :ios, min_ios_version_supported
+platform :ios, '15.0'
Android Auto Backup manifest çakışması
Bazı SDK’lar (Adapty dahil) kendi Android Auto Backup yapılandırmalarıyla birlikte gelir. Yedekleme kuralları tanımlayan birden fazla SDK kullanıyorsanız, Android manifest birleştirici android:fullBackupContent, android:dataExtractionRules veya android:allowBackup ile ilgili bir hata vererek başarısız olabilir.
Tipik hata belirtisi: Manifest merger failed: Attribute application@dataExtractionRules value=(@xml/your_data_extraction_rules) is also present at [com.other.sdk:library:1.0.0] value=(@xml/other_sdk_data_extraction_rules)
Bu değişikliklerin Android platform dizininizde yapılması gerekir (genellikle projenizin android/ klasöründe yer alır).
Bu sorunu çözmek için şunları yapmanız gerekir:
-
Manifest birleştiriciye, yedeklemeyle ilgili öznitelikler için uygulamanızın değerlerini kullanmasını söyleyin.
-
Adapty’nin kurallarını diğer SDK’ların kurallarıyla birleştiren yedekleme kuralı dosyaları oluşturun.
1. Manifest dosyanıza tools ad alanını ekleyin
AndroidManifest.xml dosyanızda kök <manifest> etiketinin tools içerdiğinden emin olun:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">
...
</manifest>
2. <application> içindeki yedekleme özniteliklerini geçersiz kılın
Aynı AndroidManifest.xml dosyasında, <application> etiketini, uygulamanızın nihai değerleri sağlayacak ve manifest birleştiriciye kütüphane değerlerini değiştirmesini söyleyecek şekilde güncelleyin:
<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="@xml/sample_backup_rules"
android:dataExtractionRules="@xml/sample_data_extraction_rules"
tools:replace="android:fullBackupContent,android:dataExtractionRules">
...
</application>
Herhangi bir SDK android:allowBackup da ayarlıyorsa, bunu da tools:replace içine ekleyin:
tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"
3. Birleştirilmiş yedekleme kuralı dosyaları oluşturun
Android projenizin res/xml/ dizininde, Adapty’nin kurallarını diğer SDK’ların kurallarıyla birleştiren XML dosyaları oluşturun. Android, işletim sistemi sürümüne bağlı olarak farklı yedekleme kuralı formatları kullandığından, her iki dosyayı da oluşturmak uygulamanızın desteklediği tüm Android sürümleriyle uyumluluğu garanti eder.
Aşağıdaki örneklerde örnek bir üçüncü taraf SDK olarak AppsFlyer kullanılmıştır. Uygulamanızda kullandığınız diğer SDK’lar için kuralları değiştirin veya ekleyin.
Android 12 ve üzeri için (yeni veri ayıklama kuralları formatını kullanır):
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<cloud-backup>
<exclude domain="sharedpref" path="appsflyer-data"/>
<exclude domain="sharedpref" path="appsflyer-purchase-data"/>
<exclude domain="database" path="afpurchases.db"/>
<exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
</cloud-backup>
<device-transfer>
<exclude domain="sharedpref" path="appsflyer-data"/>
<exclude domain="sharedpref" path="appsflyer-purchase-data"/>
<exclude domain="database" path="afpurchases.db"/>
<exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
</device-transfer>
</data-extraction-rules>
Android 11 ve altı için (eski tam yedekleme içeriği formatını kullanır):
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<exclude domain="sharedpref" path="appsflyer-data"/>
<exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
Android’de başka bir uygulamadan döndükten sonra satın almalar başarısız oluyor
Satın alma akışını başlatan Activity varsayılan olmayan bir launchMode kullanıyorsa, kullanıcı Google Play’den, bir bankacılık uygulamasından veya bir tarayıcıdan döndüğünde Android onu hatalı şekilde yeniden oluşturabilir veya yeniden kullanabilir. Bu, satın alma sonucunun kaybolmasına veya iptal edilmiş olarak değerlendirilmesine neden olabilir.
Satın alma işlemlerinin doğru çalışması için, satın alma flow’unu başlatan Activity’de yalnızca standard veya singleTop başlatma modlarını kullanın; diğer modlardan kaçının.
AndroidManifest.xml dosyanızda, satın alma flow’unu başlatan Activity’nin standard veya singleTop olarak ayarlandığından emin olun:
<activity
android:name=".MainActivity"
android:launchMode="standard" />
0.73 altındaki React Native sürümlerinde Kotlin Gradle eklentisi sürüm hatası
0.73.0’dan önceki React Native sürümlerinde, Android derlemesi Kotlin Gradle eklenti sürümü nedeniyle başarısız olur. /android/build.gradle dosyasını güncelleyin. kotlin-gradle-plugin:1.8.0 bağımlılığının veya daha yeni bir sürümünün mevcut olduğundan emin olun:
...
buildscript {
...
dependencies {
...
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
}
}
...
Podfile SWIFT_VERSION geçersiz kılmasından kaynaklanan Swift 6 derleme hataları
Bu durum, yerel iOS SDK’larının CocoaPods olarak kurulduğu SDK 3.x için geçerlidir. SDK 4.0’dan itibaren Swift paketleri olarak kurulduklarından, post_install içindeki SWIFT_VERSION override’ı artık onlara ulaşamaz.
iOS için React Native uygulamanızı derlerken Adapty pod hedeflerinde Swift 6 derleme hatalarıyla karşılaşabilirsiniz. Tipik belirtiler arasında AdaptyUIBuilderLogic içindeki @Sendable uyumsuzlukları, Adapty türlerinde eksik Sendable conformance veya actor isolation hataları sayılabilir.
Adapty pod’ları s.swift_version = '6.0' olarak tanımlar ve Swift 6 ile derlenmesi gerekir. Kendi uygulama kodunuz Swift 5’te kalabilir — yalnızca Adapty pod hedefleri (Adapty, AdaptyUI, AdaptyUIBuilder, AdaptyLogger, AdaptyPlugin) Swift 6 ile derlenmesi gerekir.
En yaygın neden, ios/Podfile içindeki her pod hedefi için SWIFT_VERSION değerini yeniden yazan bir post_install hook’udur:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '5.9'
end
end
end
Düzeltme: Adapty pod hedeflerini geçersiz kılmadan hariç tutun:
post_install do |installer|
installer.pods_project.targets.each do |target|
next if %w[Adapty AdaptyUI AdaptyUIBuilder AdaptyLogger AdaptyPlugin].include?(target.name)
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '5.9'
end
end
end
Ardından ios/ dizininden pod install komutunu çalıştırın ve yeniden derleyin.
Doğrulamak için ios/Pods/Pods.xcodeproj dosyasını açın, Adapty pod hedefini seçin → Build Settings → Swift Language Version. Bu değer Swift 6 olmalıdır.