Adapty React Native SDK'yı Expo projesine kurun ve yapılandırın
Bu kılavuz, Adapty React Native SDK’nın bir Expo projesine kurulumunu ve yapılandırması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çermektedir:
- Core Adapty: Bu modül, Adapty’nin uygulamanızda düzgün çalışması için gereklidir.
- AdaptyUI: Bu modül, çapraz platform paywalllar oluşturmayı kolaylaştıran kullanıcı dostu, kodsuz bir araç olan Adapty Paywall Builder’ı kullanıyorsanız gereklidir. AdaptyUI, core modülle birlikte otomatik olarak etkinleştirilir.
React Native uygulamanızda uygulama içi satın alma (IAP) işlemini nasıl uygulayacağınıza dair eksiksiz bir eğitim arıyorsanız buraya göz atın.
Adapty SDK’nın bir Expo uygulamasına nasıl entegre edildiğine dair gerçek bir örnek görmek ister misiniz? Örnek uygulamalarımıza göz atın:
- Expo dev build örneği — gerçek satın almalar ve Paywall Builder dahil tüm işlevsellik için
- Expo Go ve Web örneği — mock modda test için
Tam bir uygulama adım adım anlatımı için aşağıdaki videoyu da izleyebilirsiniz:
Gereksinimler
Adapty React Native SDK, iOS 13.0+ sürümünü destekler; ancak Adapty paywall builder ile oluşturulan paywallları kullanmak için iOS 15.0+ gereklidir.
Adapty, Google Play Billing Library 8.x sürümüne kadar uyumludur. Varsayılan olarak Adapty, Google Play Billing Library v.7.0.0 ile çalışır; ancak daha yeni bir sürümü zorlamak istiyorsanız bağımlılığı manuel olarak ekleyebilirsiniz. Expo için bu işlem prebuild sırasında veya bir config plugin aracılığıyla yapılabilir.
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.
Adapty SDK’yı Yükleyin
Adapty’yi bir Expo projesinde kullanmak için Expo Dev Client (özel bir geliştirme derlemesi) gereklidir.
Expo Go, özel yerel modülleri desteklemediğinden yalnızca UI/mantık geliştirmesi amacıyla mock modu ile kullanabilirsiniz (gerçek satın alma ve AdaptyUI/Paywall Builder render işlemi yapılmaz).
-
Adapty SDK’yı yükleyin (
@adapty/coreda otomatik olarak yüklenir):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’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 geçin.
- Api keys bölümünden Public SDK Key’i kopyalayın (Secret Key’i değil).
- Koddaki
"YOUR_PUBLIC_SDK_KEY"ifadesini bununla değiştirin.
- Adapty’yi başlatırken Public SDK key kullandığınızdan emin olun; Secret key yalnızca sunucu tarafı API için kullanılmalıdır.
- SDK key’leri her uygulama için benzersizdir; 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:
- Adapty Paywall Builder kullanıyorsanız, Paywall Builder hızlı başlangıç kılavuzunu izleyin.
- 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ından kaçınmak için ipuçlarını kullanın.
Adapty SDK’nın AdaptyUI modülünü etkinleştirin
Paywall Builder kullanmayı planlıyorsanız AdaptyUI modülüne ihtiyacınız olacaktır. Core modülü etkinleştirdiğinizde otomatik olarak etkinleştirilir; başka bir şey yapmanıza gerek yoktur.
İsteğe bağlı kurulum
Günlük Kaydı
Günlük kayıt sistemini ayarlama
Adapty, neler olduğunu anlamanıza yardımcı olmak için hataları ve diğer önemli bilgileri günlüğe kaydeder. Aşağıdaki düzeyler mevcuttur:
| Seviye | Açıklama |
|---|---|
error | Yalnızca hatalar loglanır |
warn | Kritik hatalara yol açmayan ancak dikkat edilmesi gereken hatalar ve SDK mesajları loglanır |
info | Hatalar, uyarılar ve çeşitli bilgi mesajları loglanır |
verbose | Fonksiyon çağrıları, API sorguları vb. gibi hata ayıklama sırasında işe yarayabilecek ek bilgiler 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, kullanıcılarınızın kişisel verilerini açıkça göndermediğiniz sürece 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 uygulamanız için IP tabanlı özelliklere ihtiyaç duyulmadığında gereksiz veri toplamayı azaltmak için bu parametreyi kullanın.
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ı reklam attribution’ı ya da analitik gerektirmiyorsa kullanın.
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
ios: {
idfaCollectionDisabled: true,
},
android: {
adIdCollectionDisabled: true,
},
});
AdaptyUI için medya önbelleği yapılandırması
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, // İsteğe bağlı: bellek önbellek boyutu (bayt cinsinden)
memoryStorageCountLimit: 2147483647, // İsteğe bağlı: bellekteki maksimum öğe sayısı
diskStorageSizeLimit: 200 * 1024 * 1024, // İsteğe bağlı: disk önbellek boyutu (bayt cinsinden)
},
});
| Parametre | Zorunlu | Açıklama |
|---|---|---|
| memoryStorageTotalCostLimit | isteğe bağlı | Bellekteki toplam önbellek boyutu (bayt cinsinden). Varsayılan değer platforma özgüdür. |
| memoryStorageCountLimit | isteğe bağlı | Bellek depolamasının öğe sayısı sınırı. Varsayılan değer platforma özgüdür. |
| diskStorageSizeLimit | isteğe bağlı | Diskteki dosya boyutu sınırı (bayt cinsinden). Varsayılan değer platforma özgüdür. |
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
},
});
Geliştirme ortamı ipuçları
Expo Go / Expo Web için mock modu kurma
Expo Go ve Expo Web ortamları Adapty’nin native modüllerine erişemez. Uygulamanızın arayüzünü ve paywall mantığını build edip test edebilmek için runtime hatalarından kaçınmak amacıyla Adapty mock modu sunar.
Mock modu, gerçek satın almaları test etmek için bir araç değildir:
- App Store / Google Play satın alma akışlarını açmaz ve gerçek işlemler oluşturmaz.
- Adapty Paywall Builder (AdaptyUI) ile oluşturulmuş paywall’ları/onboarding’leri render etmez.
- Adapty’nin native modülleri tamamen devre dışı bırakılır; Xcode/Android build’inde eksik native SDK dosyaları veya geçersiz bir API key hata tetiklemez.
Gerçek satın almaları ve Paywall Builder paywall’larını test etmek için mock modunun 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 mock modunu etkinleştirir. Mock verilerini özelleştirmek istemiyorsanız herhangi bir yapılandırma yapmanıza gerek yoktur.
Mock modu etkinken:
- Tüm Adapty metotları, Adapty sunucularına ağ isteği göndermeden mock veri döndürür.
- Varsayılan olarak, ilk mock profilinde aktif abonelik bulunmaz.
- Varsayılan olarak,
makePurchase(...)başarılı bir satın alma işlemini simüle eder ve premium erişim sağlar.mockConfigkullanarak aktivasyon sırasında mock verilerini ö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 yöntemlerini aktivasyondan önce çağırmanız gerekiyorsa (örneğin isActivated() veya setLogLevel()), activate() öncesinde enableMock() kullanın. Köprü zaten başlatılmışsa bu yöntem hiçbir şey yapmaz.
adapty.enableMock(); // İsteğe bağlı: mock verilerini özelleştirmek için mockConfig geçirebilirsiniz
// Artık aktivasyondan önce yöntemleri çağırabilirsiniz
await adapty.activate('YOUR_PUBLIC_SDK_KEY');
Geliştirme amacıyla SDK aktivasyonunu erteleme
Adapty, SDK etkinleştirildiğinde gerekli tüm kullanıcı verilerini önceden çekerek daha hızlı ve güncel veriye 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ı doğrudan kontrol edemese de SDK’nın güncel kullanıcı verisi almak için yaptığı istekleri erteleyebilir.
__debugDeferActivation özelliği etkinleştirildiğinde, activate çağrısı bir sonraki Adapty SDK çağrısını yapana kadar bekletilir. Bu sayede kimlik doğrulama verisi gerekmediğinde gereksiz istemler önlenmiş olur.
Bu özellik yalnızca geliştirme amaçlıdır; tüm olası kullanıcı senaryolarını kapsamadığını unutmayın. Üretim ortamında aktivasyon geciktirilmemelidir; gerçek cihazlar genellikle kimlik doğrulama verilerini hatırlar ve tekrar tekrar kimlik bilgisi istemez.
Önerilen kullanım yaklaşımı şu şekildedir:
try {
adapty.activate('PUBLIC_SDK_KEY', {
__debugDeferActivation: isSimulator(), // 'isSimulator' herhangi bir 3. taraf kütüphanesinden
});
} catch (error) {
console.error('Adapty SDK etkinleştirilemedi:', error);
// Uygulamanız için hatayı uygun şekilde ele alın
}
React Native’in Hızlı Yenileme özelliğinde SDK etkinleştirme hatalarını giderme
React Native’de Adapty SDK ile 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ı 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
}
Sorun Giderme
Minimum iOS sürümü hatası
iOS için derleme yaparken, özellikle iOS 15.0+ gerektiren Adapty paywall builder ile oluşturulmuş paywall’lar kullanıyorsanız, minimum iOS sürümü veya deployment target hakkında bir hatayla karşılaşabilirsiniz.
Expo, expo prebuild sırasında iOS projesini (Podfile dahil) oluşturduğundan, Podfile’ı doğrudan düzenlememalisiniz. Bunun yerine deployment target’ı expo-build-properties config plugin’i aracılığıyla yapılandırın.
- Plugin’i yükleyin:
npx expo install expo-build-properties
- Expo config dosyanızı (
app.jsonveyaapp.config.js) güncelleyerek iOS deployment target’ını ayarlayın:
{
"expo": {
// ...other Expo config...
"plugins": [
[
"expo-build-properties",
{
"ios": {
// Yalnızca temel Adapty özellikleri için "13.0",
// veya paywall builder ile oluşturulmuş paywalllar kullanıyorsanız "15.0" kullanın.
"deploymentTarget": "15.0"
}
}
],
]
}
}
- Native iOS projesini yeniden oluşturun ve derleyin:
npx expo prebuild --clean
npx expo run:ios # or `eas build -p ios` on your CI
Android Auto Backup manifest çakışması
Expo’yu Android Auto Backup yapılandıran birden fazla SDK ile (Adapty, AppsFlyer veya expo-secure-store gibi) kullanırken manifest birleştirme çakışmasıyla karşılaşabilirsiniz.
Tipik bir hata şu şekilde 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 Android yedekleme yapılandırmasını Adapty eklentisinin yönetmesine izin vermeniz gerekiyor.
Projeniz aynı zamanda expo-secure-store kullanıyorsa, örtüşmeyi ö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 değerindedir. Etkinleştirildiğinde, Android yedekleme kurallarını Adapty eklentisinin yönetmesine izin verir.
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. Projenizde başka kütüphaneler özel yedekleme kuralları tanımlıyorsa, bunları manuel olarak yapılandırmanız gerekecektir.