Adapty React Native SDK'yı bir Expo projesine yükleyin ve yapılandırın

Bu rehber, Adapty React Native SDK’yı bir Expo projesine yüklemeyi ve yapılandırmayı anlatmaktadır.

Saf React Native (Expo olmadan) kullanıyorsanız, bunun yerine React Native kurulum rehberini takip edin.

Adapty SDK, React Native uygulamanıza sorunsuz entegrasyon için iki temel modül içerir:

  • Core Adapty: Adapty’nin uygulamanızda düzgün çalışması için zorunlu olan modüldür.
  • AdaptyUI: Kolayca platformlar arası paywall oluşturmak için kullanıcı dostu, kodsuz bir araç olan Adapty Paywall Builder’ı kullanıyorsanız bu modüle ihtiyacınız vardır. AdaptyUI, core modülle birlikte otomatik olarak etkinleştirilir.

React Native uygulamanızda uygulama içi satın almayı nasıl uygulayacağınıza dair eksiksiz bir eğitim için buraya göz atın.

Adapty SDK’nın bir Expo uygulamasına nasıl entegre edildiğini gerçek bir örnekte görmek ister misiniz? Örnek uygulamalarımıza göz atın:

Eksiksiz bir uygulama için 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

Release

Adapty’yi bir Expo projesinde kullanmak için Expo Dev Client (özel geliştirme derlemesi) gereklidir.

Expo Go özel yerel modülleri desteklemez; bu nedenle yalnızca UI/mantık geliştirmesi için mock modda kullanılabilir (gerçek satın alma yoktur ve AdaptyUI/Paywall Builder işlenemez).

  1. Adapty SDK’yı yükleyin (@adapty/core otomatik olarak da yüklenir):

    npx expo install react-native-adapty
    npx expo prebuild
  2. EAS veya yerel derleme kullanarak uygulamanızı geliştirme için derleyin:

  3. 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:

  1. Adapty Kontrol Paneli’ne gidin ve App settings → General sayfasına geçin.
  2. Api keys bölümünden Public SDK Key’i kopyalayın (Secret Key’i değil).
  3. 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');

Geliştirme ortamındaki etkinleştirme hatalarını önlemek için ipuçlarına bakın.

Şimdi uygulamanızda paywallları ayarlayı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

Loglama

Loglama sistemini ayarlayın

Adapty, neler olduğunu anlamanıza yardımcı olmak için hataları ve diğer önemli bilgileri loglar. Aşağıdaki log seviyeleri mevcuttur:

SeviyeAçıklama
errorYalnızca hatalar loglanır
warnHatalar ve kritik sorunlara yol açmayan ancak dikkat edilmesi gereken SDK mesajları loglanır
infoHatalar, uyarılar ve çeşitli bilgi mesajları loglanır
verboseFonksiyon çağrıları, API sorguları gibi hata ayıklama sırasında yararlı olabilecek ek bilgiler loglanır

Log seviyesini uygulamanızda Adapty yapılandırmasından önce veya sırasında 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üvenlik politikaları uygulayabilirsiniz.

IP adresi toplama ve paylaşımını devre dışı bırakın

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ı özellikler gerekmediğinde gereksiz veri toplamayı azaltmak amacıyla bu parametreyi kullanın.

adapty.activate('YOUR_PUBLIC_SDK_KEY', {
  ipAddressCollectionDisabled: true,
});

Reklam kimliği toplama ve paylaşımını devre dışı bırakın

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.

App Store/Play Store politikalarına uymak, Uygulama İzleme Şeffaflığı istemini tetiklemekten kaçınmak ya da uygulamanız reklam kimliklerine dayalı attribution veya analiz gerektirmiyorsa bu parametreyi 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

Varsayılan olarak AdaptyUI, 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
  },
});

Parametreler:

ParametreZorunluAçıklama
memoryStorageTotalCostLimitisteğe bağlıBellekteki toplam önbellek boyutu (bayt cinsinden). Varsayılan olarak platforma özgü değer kullanılır.
memoryStorageCountLimitisteğe bağlıBellek depolama alanındaki maksimum öğe sayısı. Varsayılan olarak platforma özgü değer kullanılır.
diskStorageSizeLimitisteğe bağlıDisk üzerindeki dosya boyutu sınırı (bayt cinsinden). Varsayılan olarak platforma özgü değer kullanılı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 ayarlayın

Expo Go ve Expo Web ortamları Adapty’nin yerel modüllerine erişemez. Çalışma zamanı hatalarından kaçınırken uygulamanızın arayüzünü ve paywall mantığını oluşturup test edebilmek için 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şturulan paywall/onboarding’leri işlemez.
  • Adapty’nin yerel modülleri tamamen atlanır; Xcode/Android derlemesinde eksik yerel 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 derlemesi kullanın.

Varsayılan olarak SDK, Expo Go ve web ortamlarını otomatik olarak algılar ve mock modu etkinleştirir. Mock verilerini özelleştirmek istemediğiniz sürece herhangi bir şey yapılandırmanız gerekmez.

Mock modu etkin olduğunda:

  • Tüm Adapty metodları, Adapty sunucularına ağ isteği göndermeden mock veriler döndürür.
  • Varsayılan olarak başlangıç mock profilinde aktif abonelik yoktur.
  • Varsayılan olarak makePurchase(...) başarılı bir satın almayı simüle eder ve premium erişim sağlar.

Etkinleştirme sırasında mockConfig kullanarak mock verileri özelleştirebilirsiniz. Yapılandırma formatı ve desteklenen parametreler burada mevcuttur.


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);
}

Etkinleştirmeden önce SDK metodlarını çağırmanız gerekiyorsa (isActivated() veya setLogLevel() gibi), 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');

Geliştirme amaçlı SDK etkinleştirmesini geciktirin

Adapty, SDK etkinleştirmesinde tüm gerekli kullanıcı verilerini önceden getirir; böylece güncel verilere daha hızlı erişim sağlanır.

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 güncel kullanıcı verilerini almak için yaptığı istekleri erteleyebilir.

__debugDeferActivation özelliği etkinleştirildiğinde, activate çağrısı bir sonraki Adapty SDK çağrısına kadar bekletilir. Bu, kimlik doğrulama verisi gerekmiyorsa gereksiz istem görüntülenmesini engeller.

Bu özelliğin yalnızca geliştirme amaçlı kullanılması gerektiğini belirtmek gerekir; zira tüm olası kullanıcı senaryolarını kapsamaz. Production’da etkinleştirme geciktirilmemelidir; çünkü gerçek cihazlar genellikle kimlik doğrulama verilerini hatırlar ve tekrar tekrar kimlik bilgisi istemez.

Kullanım için önerilen yaklaşım:

try {
  adapty.activate('PUBLIC_SDK_KEY', {
    __debugDeferActivation: isSimulator(), // 'isSimulator' from any 3rd party library
  });
} catch (error) {
  console.error('Failed to activate Adapty SDK:', error);
  // Handle the error appropriately for your app
}

React Native’in Fast Refresh özelliğinde SDK etkinleştirme hatalarını giderin

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 hata, React Native’in fast refresh özelliğinin geliştirme sırasında birden fazla etkinleştirme çağrısını tetiklemesinden kaynaklanır. Bunu önlemek için __DEV__ (React Native’in geliştirme modu bayrağı) olarak ayarlanmış __ignoreActivationOnFastRefresh seçeneğini kullanı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şturulan paywallları kullanıyorsanız minimum iOS sürümü veya deployment target hakkında bir hata alabilirsiniz.

Expo, expo prebuild sırasında iOS projesini (Podfile dahil) oluşturduğundan Podfile’ı doğrudan düzenlememek gerekir. Bunun yerine expo-build-properties config plugin aracılığıyla deployment target’ı yapılandırın.

  1. Plugin’i yükleyin:

    npx expo install expo-build-properties
  2. iOS deployment target’ı ayarlamak için Expo yapılandırmanızı (app.json veya app.config.js) güncelleyin:

{
    "expo": {
        // ...other Expo config...
        "plugins": [
            [
                "expo-build-properties",
                {
                    "ios": {
                        // Use "13.0" for core Adapty features only,
                        // or "15.0" if you use paywalls created in the paywall builder.
                        "deploymentTarget": "15.0"
                    }
                }
            ],
        ]
    }
}
  1. 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ı

Expo’yu Android Auto Backup yapılandıran birden fazla SDK ile (Adapty, AppsFlyer veya expo-secure-store gibi) 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 Android yedekleme yapılandırmasını Adapty plugin’inin yönetmesine izin vermeniz gerekir. Projenizde ayrıca expo-secure-store kullanıyorsanız ç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 plugin’inin Android yedekleme kurallarını kontrol etmesini sağlar. SecureStore’un yedekleme yapılandırması artık Adapty tarafından yönetileceğinden uyarıları önlemek için expo-secure-store kullanıyorsanız "configureAndroidBackup": false ekleyin.

Bu kurulum yalnızca Adapty, AppsFlyer ve expo-secure-store için yedekleme gereksinimlerini dikkate alır. Projenizdeki diğer kütüphaneler özel yedekleme kuralları tanımlıyorsa bunları manuel olarak yapılandırmanız gerekir.