Unity SDK'yı yükleyin ve yapılandırın

Adapty SDK, Unity 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 SDK.
  • AdaptyUI: Adapty Paywall Builder’ı kullanıyorsanız ihtiyaç duyulan isteğe bağlı modül. Paywall Builder, kolayca platformlar arası paywall oluşturmanızı sağlayan kodsuz bir araçtır.

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

Gereksinimler

Adapty SDK, iOS 13.0 ve üzerini destekler; ancak paywall builder ile oluşturulan paywalllarla çalışmak için iOS 15.0+ gereklidir.

Adapty, Google Play Billing Library’nin 8.x sürümüne kadar olan versiyonlarıyla uyumludur. Varsayılan olarak Adapty, Google Play Billing Library v7.0.0 kullanır. Daha yeni bir sürüm kullanmak için Android build’inizdeki Billing bağımlılığını geçersiz kılın.

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

  1. adapty-unity-plugin-*.unitypackage dosyasını GitHub’dan indirin ve projenize aktarın.
456bd98-adapty-unity-plugin.webp
  1. External Dependency Manager eklentisini indirin ve aktarın.

  2. SDK, iOS Cocoapods bağımlılıklarını ve Android Gradle bağımlılıklarını yönetmek için “External Dependency Manager” eklentisini kullanır. Kurulumun ardından bağımlılık yöneticisini çağırmanız gerekebilir:

    Assets -> External Dependency Manager -> Android Resolver -> Force Resolve

    ve

    Assets -> External Dependency Manager -> iOS Resolver -> Install Cocoapods

  3. Unity projenizi iOS için derlerken Unity-iPhone.xcworkspace dosyası oluşturulur. Cocoapods bağımlılıklarının kullanılabilmesi için Unity-iPhone.xcodeproj yerine bu dosyayı açmanız gerekir.

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

Adapty SDK’yı uygulama kodunuzda etkinleştirin.

Adapty SDK’nın uygulamanızda yalnızca bir kez etkinleştirilmesi yeterlidir.

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.
using UnityEngine;
using AdaptySDK;

public class AdaptyListener : MonoBehaviour, AdaptyEventListener {
    void Start() {
        DontDestroyOnLoad(this.gameObject);
        Adapty.SetEventListener(this);

        var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY");

        Adapty.Activate(builder.Build(), (error) => {
            if (error != null) {
                // handle the error
                return;
            }
        });
    }

    public void OnLoadLatestProfile(AdaptyProfile profile) { }
    public void OnInstallationDetailsSuccess(AdaptyInstallationDetails details) { }
    public void OnInstallationDetailsFail(AdaptyError error) { }
}

Olay dinlemeyi ayarlayın

Adapty olaylarını dinleyecek bir script oluşturun ve sahnenizde AdaptyListener olarak adlandırın. Uygulamanın tüm ömrü boyunca bu nesnenin varlığını sürdürmesi için DontDestroyOnLoad metodunu kullanmanızı öneririz.

2ccd564-create_adapty_listener.webp

Adapty, AdaptySDK namespace’ini kullanır. Adapty SDK kullanan script dosyalarınızın en üstüne şunu ekleyebilirsiniz:

using AdaptySDK;

Adapty olaylarına abone olun:

using UnityEngine;
using AdaptySDK;

public class AdaptyListener : MonoBehaviour, AdaptyEventListener {
    public void OnLoadLatestProfile(AdaptyProfile profile) {
        // handle updated profile data
    }

    public void OnInstallationDetailsSuccess(AdaptyInstallationDetails details) { }
    public void OnInstallationDetailsFail(AdaptyError error) { }
}

Adapty’nin mümkün olduğunca erken başlatılması için Script Execution Order’ı, AdaptyListener’ı Default Time’dan önce gelecek şekilde ayarlamanızı öneririz.

activate_unity.webp

Projenize Kotlin Eklentisini ekleyin

Bu adım zorunludur. Atlandığında paywall görüntülenirken mobil uygulamanız çökebilir.

  1. Player Settings bölümünde Custom Launcher Gradle Template ve Custom Base Gradle Template seçeneklerinin işaretli olduğundan emin olun.

    kotlin-plugin1.webp
  2. /Assets/Plugins/Android/launcherTemplate.gradle dosyasına aşağıdaki satırı ekleyin:

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply from: 'setupSymbols.gradle'
    apply from: '../shared/keepUnitySymbols.gradle'
  3. /Assets/Plugins/Android/baseProjectTemplate.gradle dosyasına aşağıdaki satırı ekleyin:

    plugins {
        // If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
        // See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
        // See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
        // To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
        id 'com.android.application' version '8.3.0' apply false
        id 'com.android.library' version '8.3.0' apply false
        id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
        **BUILD_SCRIPT_DEPS**
    }

Şimdi uygulamanızda paywallları ayarlayın:

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

Paywall Builder kullanmayı planlıyor ve AdaptyUI modülünü yüklediyseniz AdaptyUI’ın etkin olması gerekir. Yapılandırma sırasında etkinleştirebilirsiniz:

var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY")
    .SetActivateUI(true);

İsteğe bağlı kurulum

Loglama

Loglama sistemini ayarlayın

Adapty, neler olup bittiğini 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 hatalara yol açmayan ancak dikkat edilmesi gereken SDK mesajları loglanır
infoHatalar, uyarılar ve çeşitli bilgi mesajları loglanır
verboseHata ayıklama sırasında işe yarayabilecek fonksiyon çağrıları, API sorguları gibi ek bilgiler de dahil olmak üzere her şey loglanır

Adapty yapılandırması sırasında uygulamanızda log seviyesini ayarlayabilirsiniz:

// 'verbose' is recommended for development and the first production release
var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY");
builder.LogLevel = AdaptyLogLevel.Verbose;

Log seviyesini çalışma zamanında da değiştirebilirsiniz:

Adapty.SetLogLevel(AdaptyLogLevel.Verbose, (error) => {
    // handle result
});

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ırakın

Adapty modülünü etkinleştirirken kullanıcı IP adresi toplama ve paylaşımını devre dışı bırakmak için SetIPAddressCollectionDisabled değerini true olarak ayarlayın. Varsayılan değer false’tur.

Bu parametreyi kullanıcı gizliliğini güçlendirmek, 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 kullanabilirsiniz.

var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY")
    .SetIPAddressCollectionDisabled(true);

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

Adapty modülünü etkinleştirirken reklam kimliklerinin toplanmasını devre dışı bırakmak için SetAppleIDFACollectionDisabled ve/veya SetGoogleAdvertisingIdCollectionDisabled değerini true olarak ayarlayın. Varsayılan değer false’tur.

Bu parametreyi App Store/Google Play politikalarına uymak, App Tracking Transparency isteğinin tetiklenmesini önlemek ya da uygulamanız reklam kimliklerine dayalı attribution veya analitik gerektirmiyorsa kullanabilirsiniz.

var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY")
    .SetAppleIDFACollectionDisabled(true)
    .SetGoogleAdvertisingIdCollectionDisabled(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ı (görseller 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 SetAdaptyUIMediaCache kullanın:

var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY")
    .SetAdaptyUIMediaCache(
        100 * 1024 * 1024, // MemoryStorageTotalCostLimit 100MB
        null, // MemoryStorageCountLimit
        100 * 1024 * 1024 // DiskStorageSizeLimit 100MB
    );

Parametreler:

ParametreZorunluAçıklama
memoryStorageTotalCostLimitisteğe bağlıBellekte toplam önbellek boyutu (bayt cinsinden). Varsayılan değer platforma göre değişir.
memoryStorageCountLimitisteğe bağlıBellek depolamasının öğe sayısı sınırı. Varsayılan değer platforma göre değişir.
diskStorageSizeLimitisteğ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 SetGoogleLocalAccessLevelAllowed değerini true olarak ayarlayın:

var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY")
    .SetGoogleLocalAccessLevelAllowed(true);

Yedek geri yüklemede verileri temizleyin

SetAppleClearDataOnBackup 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 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 olan işlem geçmişi ve Adapty sunucularındaki kullanıcı verileri değişmeden kalır.

var builder = new AdaptyConfiguration.Builder("YOUR_PUBLIC_SDK_KEY")
    .SetAppleClearDataOnBackup(true);

Sorun Giderme

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"/>

    

Unity’de bu değişiklikleri Assets/Plugins/Android/AndroidManifest.xml dosyasına uygulayın ve yedekleme kural dosyalarını Assets/Plugins/Android/res/xml/ altında oluşturun.

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 dışı bir launchMode kullanıyorsa Android; kullanıcı Google Play’den, bir bankacılık uygulamasından veya tarayıcıdan geri döndüğünde bu Activity’yi yanlış şekilde yeniden oluşturabilir veya yeniden kullanabilir. Bu durum satın alma sonucunun kaybolmasına ya da iptal edilmiş gibi görünmesine yol açabilir.

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 launch mode kullanın; 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" />