Capacitor - Adapty SDK kurulumu ve yapılandırması

Adapty SDK, Capacitor 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 bu modül gereklidir.
  • AdaptyUI: Platformlar arası paywallları kolayca oluşturmak için kullanılan, kod gerektirmeyen araç olan Adapty Paywall Builder’ı kullanıyorsanız bu modül gereklidir. AdaptyUI, core modülle birlikte otomatik olarak etkinleştirilir.

Adapty SDK’nın gerçek bir mobil uygulamaya nasıl entegre edildiğini görmek ister misiniz? Paywall gösterme, satın alma yapma ve diğer temel işlevleri kapsayan tam kurulumu sergileyen örnek uygulamalarımıza göz atın.

Gereksinimler

Adapty Capacitor SDK için sürüm gereksinimleri şunlardır:

Adapty SDK SürümüCapacitor SürümüiOS Sürümü
3.16.0+815.0+
3.15714.0+

Capacitor 6 ve altı sürümler desteklenmemektedir.

Adapty, Google Play Billing Library 8.x sürümüne kadar uyumludur. Adapty varsayılan olarak 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.

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ı Kurun

Release

Adapty SDK’yı kurun:

npm install @adapty/capacitor
npx cap sync   

Adapty SDK’nın Adapty modülünü etkinleştirin

Adapty SDK, uygulamanızda yalnızca bir kez etkinleştirilmesi gerekir.

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 herhangi bir uygulama dosyasına kopyalayın:


try {
  await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
      // geliştirme aşaması ve ilk production sürümü için ayrıntılı loglama önerilir
        logLevel: 'verbose', 
      // geliştirme ortamında, çoklu aktivasyon hatalarını önlemek için bu değişkeni kullanın. Geliştirme ortamı değişkeninize ayarlayın
      __ignoreActivationOnFastRefresh: true,
    }
  });
  console.log('Adapty activated successfully!');
} catch (error) {
  console.error('Failed to activate Adapty SDK:', error);
}

Geliştirme ortamında aktivasyon hatalarını önlemek için ipuçlarına göz atı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 var. Core modülü etkinleştirdiğinizde bu otomatik olarak yapılır; başka bir şey yapmanıza gerek yoktur.

İsteğe bağlı kurulum

Loglama

Loglama sistemini kurun

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
warnKritik hatalara yol açmayan ancak dikkat edilmesi gereken hatalar ve SDK mesajları loglanır
infoHatalar, uyarılar ve çeşitli bilgi mesajları loglanır
verboseFonksiyon çağrıları, API sorguları gibi hata ayıklamada işe yarayabilecek ek bilgiler loglanır

Log seviyesini Adapty yapılandırmasından önce veya sırasında ayarlayabilirsiniz:

// Aktivasyondan önce log seviyesini ayarlayın
adapty.setLogLevel({ logLevel: 'verbose' });

// Veya yapılandırma sırasında ayarlayın
await adapty.activate({
  apiKey: 'YOUR_PUBLIC_SDK_KEY',
  params: {
    logLevel: 'verbose',
  }
});

Veri politikaları

Adapty, açıkça göndermedikçe 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şmayı 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.

Bu parametreyi kullanıcı gizliliğini artırmak, bölgesel veri koruma yönetmeliklerine (GDPR veya CCPA gibi) uymak ya da IP tabanlı özellikler uygulamanız için gerekli değilken gereksiz veri toplamayı azaltmak amacıyla kullanabilirsiniz.

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

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

Adapty modülünü etkinleştirirken, reklam tanımlayıcısı toplamayı 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 veya uygulamanızın reklam kimliklerine dayalı reklam attribution ya da analitik gerektirmediği durumlarda bu parametreyi kullanabilirsiniz.

await adapty.activate({
  apiKey: 'YOUR_PUBLIC_SDK_KEY',
  params: {
    ios: {
      idfaCollectionDisabled: true,      
    },
    android: {
      adIdCollectionDisabled: true,      
    },
  }
});

AdaptyUI için medya önbellek yapılandırmasını kurun

Varsayılan olarak AdaptyUI, performansı artırmak ve ağ kullanımını azaltmak için medyayı (görüntü 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:

await adapty.activate({
  apiKey: 'YOUR_PUBLIC_SDK_KEY',
  params: {
    mediaCache: {
      memoryStorageTotalCostLimit: 200 * 1024 * 1024, // İsteğe bağlı: bayt cinsinden bellek önbellek boyutu
      memoryStorageCountLimit: 2147483647,            // İsteğe bağlı: bellekteki maksimum öğe sayısı
      diskStorageSizeLimit: 200 * 1024 * 1024,       // İsteğe bağlı: bayt cinsinden disk önbellek boyutu
    },
  }
});

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 deposundaki maksimum öğe sayısı. Varsayılan olarak platforma özgü değer kullanılır.
diskStorageSizeLimitisteğe bağlıDiskteki maksimum dosya boyutu (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:

await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
        android: {
            localAccessLevelAllowed: true,
        },
    }
});

Yedekten geri yükleme sırasında 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 paywalllar dahil olmak üzere yerel olarak depolanan tüm SDK verilerini siler. SDK ardından temiz bir durumla başlar. 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.

await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
        ios: {
            clearDataOnBackup: true,
        },
    }
});

Geliştirme ortamı ipuçları

Capacitor’ın live-reload özelliğinde SDK aktivasyon hatalarını giderin

Capacitor’da 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, Capacitor’ın live-reload ö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 Capacitor’ın geliştirme modu bayrağına ayarlayın — kullandığınız bundle’a göre farklılık gösterecektir.

try {
  await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
        // Geliştirme ortamı değişkeninizi ayarlayın
      __ignoreActivationOnFastRefresh: true, 
    }
  });
} catch (error) {
  console.error('Failed to activate Adapty SDK:', error);
  // Uygulamanız için uygun şekilde hatayı işleyin
}

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, '14.0'  # Yalnızca core özellikler için
# VEYA
+platform :ios, '15.0'  # Paywall builder'da oluşturulan paywalllar kullanılıyorsa

Android yedekleme kuralları (Otomatik Yedekleme yapılandırması)

Bazı SDK’lar (Adapty dahil) kendi Android Auto Backup yapılandırmasını içerir. Yedekleme kurallarını tanımlayan birden fazla SDK kullanıyorsanız, Android manifest birleştirme işlemi android:fullBackupContent, android:dataExtractionRules veya android:allowBackup ile ilgili bir hatayla başarısız olabilir.

Tipik hata belirtileri: 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şiklikler Android platform dizininizde yapılmalıdır (genellikle projenizin android/ klasöründe bulunur).

Sorunu çözmek için şunları yapmanız gerekir:

  • Manifest birleştirme işlemine, yedeklemeyle ilgili özellikler 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. Manifestinize 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çinde yedekleme özelliklerini geçersiz kılın

Aynı AndroidManifest.xml dosyasında, <application> etiketini güncelleyerek uygulamanızın nihai değerleri sağlamasını ve manifest birleştirme işlemine kütüphane değerlerini değiştirmesini söyleyin:

<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 de android:allowBackup ayarlıyorsa, bunu 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 uyumluluk sağlar.

Aşağıdaki örneklerde örnek bir üçüncü taraf SDK olarak AppsFlyer kullanılmaktadı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 çıkarma 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"/>

    

Yerel Android dosyalarını değiştirdikten sonra, platformu yeniden oluşturursanız Capacitor’ın güncellenmiş kaynakları alması için npx cap sync android komutunu çalıştırın.

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 tarayıcıdan döndüğünde Android bunu yanlış şekilde yeniden oluşturabilir veya yeniden kullanabilir. Bu durum satın alma sonucunun kaybolmasına veya iptal edilmiş olarak değerlendirilmesine neden olabilir.

Satın almaların doğru çalışmasını sağlamak için satın alma akışını başlatan Activity’de yalnızca standard veya singleTop başlatma modlarını kullanın ve diğer modlardan kaçının.

AndroidManifest.xml dosyanızda, satın alma akışını başlatan Activity’nin standard veya singleTop olarak ayarlandığından emin olun:

<activity
    android:name=".MainActivity"
    android:launchMode="standard" />