Android SDK'yı Yükle ve Yapılandır
Adapty SDK, mobil 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 gerekli olan temel SDK.
- AdaptyUI: Adapty Paywall Builder’ı kullanıyorsanız bu modüle ihtiyaç duyarsınız. Paywall Builder, platformlar arası paywall’ları kolayca oluşturmak için kullanılan, kod gerektirmeyen kullanıcı dostu bir araçtır. AdaptyUI, core modülle birlikte otomatik olarak etkinleştirilir.
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 içeren tam kurulumu gösteren örnek uygulamamıza göz atın.
Gereksinimler
Minimum SDK gereksinimi: minSdkVersion 21
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 isterseniz 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ı Yükle
Bağımlılık kurulum yönteminizi seçin:
- Standart Gradle: Bağımlılıkları modül düzeyindeki
build.gradledosyanıza ekleyin - Projeniz
.gradle.ktsdosyaları kullanıyorsa bağımlılıkları modül düzeyindekibuild.gradle.ktsdosyanıza ekleyin - Sürüm katalogları kullanıyorsanız bağımlılıkları
libs.versions.tomldosyanıza ekleyin, ardındanbuild.gradle.ktsiçinde referans verin
Bağımlılık çözümlenemiyorsa Gradle betiklerinizde mavenCentral() tanımlı olduğundan emin olun.
Nasıl ekleneceğine dair talimat
Projenizin settings.gradle dosyasında dependencyResolutionManagement yoksa, üst düzey build.gradle dosyanızdaki repositories bölümünün sonuna şunu ekleyin:
allprojects {
repositories {
...
mavenCentral()
}
}Aksi takdirde, settings.gradle dosyanızdaki dependencyResolutionManagement bölümünün repositories kısmına şunu ekleyin:
dependencyResolutionManagement {
...
repositories {
...
mavenCentral()
}
}Adapty SDK’nın Adapty modülünü etkinleştir
Temel kurulum
Adapty SDK’yı uygulama kodunuzda etkinleştirin.
Adapty SDK’nın uygulamanızda yalnızca bir kez etkinleştirilmesi gerekir.
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.
Şimdi uygulamanızda paywall’ları ayarlayın:
- Adapty Paywall Builder kullanıyorsanız Paywall Builder 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.
Adapty SDK’nın AdaptyUI modülünü etkinleştir
Paywall Builder kullanmayı planlıyorsanız AdaptyUI modülüne ihtiyacınız var. Core modülü etkinleştirdiğinizde otomatik olarak etkinleştirilir; başka bir şey yapmanıza gerek yoktur.
Proguard’ı yapılandır
Uygulamanızı production ortamına almadan önce Proguard yapılandırmanıza -keep class com.adapty.** { *; } satırını ekleyin.
İ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. Kullanılabilir log seviyeleri şunlardır:
| Seviye | Açıklama |
|---|---|
AdaptyLogLevel.NONE | Hiçbir şey loglanmaz. Varsayılan değer |
AdaptyLogLevel.ERROR | Yalnızca hatalar loglanır |
AdaptyLogLevel.WARN | Kritik hatalara yol açmayan ancak dikkat edilmesi gereken hatalar ve SDK mesajları loglanır. |
AdaptyLogLevel.INFO | Hatalar, uyarılar ve çeşitli bilgi mesajları loglanır. |
AdaptyLogLevel.VERBOSE | Fonksiyon çağrıları, API sorguları gibi hata ayıklama sırasında faydalı olabilecek ek bilgiler loglanır. |
Adapty’yi yapılandırmadan önce uygulamanızda log seviyesini ayarlayabilirsiniz.
Loglama sistemi mesajlarını yönlendirin
Herhangi bir nedenle Adapty’den gelen mesajları kendi sisteminize göndermek veya bir dosyaya kaydetmek istiyorsanız varsayılan davranışı geçersiz kılabilirsiniz:
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 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ı özellikler uygulamanız için gerekli değilse gereksiz veri toplamayı azaltmak amacıyla bu parametreyi kullanın.
Reklam kimliği (Ad ID) toplama ve paylaşımını devre dışı bırakın
Adapty modülünü etkinleştirirken kullanıcı reklam kimliği toplamasını devre dışı bırakmak için adIdCollectionDisabled değerini true olarak ayarlayın. Varsayılan değer false’tur.
Play Store politikalarına uymak, reklam kimliği izin istemini tetiklemekten kaçınmak veya uygulamanız Ad ID tabanlı reklam attribution veya analitik gerektirmiyorsa bu parametreyi kullanın.
AdaptyUI için medya önbelleği yapılandırmasını ayarlayın
AdaptyUI varsayılan olarak performansı artırmak ve ağ kullanımını azaltmak amacıyla medyayı (resim ve video gibi) önbelleğe alır. Özel bir yapılandırma sağlayarak önbellek ayarlarını özelleştirebilirsiniz.
Varsayılan önbellek boyutunu ve geçerlilik süresini geçersiz kılmak için AdaptyUI.configureMediaCache kullanın. Bu isteğe bağlıdır; bu yöntemi çağırmazsanız varsayılan değerler kullanılır (100 MB disk boyutu, 7 gün geçerlilik).
Parametreler:
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| diskStorageSizeLimit | isteğe bağlı | Diskteki toplam önbellek boyutu (bayt cinsinden). Varsayılan: 100 MB. |
| diskCacheValidityTime | isteğe bağlı | Önbelleğe alınan dosyaların geçerli sayıldığı süre. Varsayılan: 7 gün. |
Çalışma zamanında AdaptyUI.clearMediaCache(strategy) kullanarak medya önbelleğini temizleyebilirsiniz. strategy olarak CLEAR_ALL veya CLEAR_EXPIRED_ONLY belirtilebilir.
Gizlenmiş hesap kimliklerini ayarlayın
Google Play, kullanıcı gizliliğini ve güvenliğini artırmak için belirli kullanım senaryolarında gizlenmiş hesap kimlikleri gerektirir. Bu kimlikler, Google Play’in kullanıcı bilgilerini anonim tutarak satın almaları tanımlamasına yardımcı olur; bu durum özellikle dolandırıcılık önleme ve analitik açısından önemlidir.
Uygulamanız hassas kullanıcı verileri işliyorsa veya belirli gizlilik düzenlemelerine uymak zorundaysanız bu kimlikleri ayarlamanız gerekebilir. Gizlenmiş kimlikler, Google Play’in gerçek kullanıcı tanımlayıcılarını ifşa etmeden satın almaları takip etmesini sağlar.
Adapty’yi özel bir süreçte çalıştırın
Adapty varsayılan olarak yalnızca uygulamanızın ana sürecinde çalışabilir. Uygulamanız birden fazla süreç kullanıyorsa Adapty’yi yalnızca bir kez başlatın; aksi takdirde beklenmedik davranışlar oluşabilir.
Adapty’yi farklı bir süreçte çalıştırmanız gerekiyorsa bunu yapılandırmanızda belirtin:
Bu değeri ayarlamadan Adapty’yi başka bir süreçte etkinleştirmeye çalışırsanız SDK bir uyarı loglar ve etkinleştirmeyi atlar.
Yerel access level’ları etkinleştirin
Varsayılan olarak Android’de yerel access level’lar devre dışıdır. Etkinleştirmek için withLocalAccessLevelAllowed değerini true olarak ayarlayın:
Sorun Giderme
Android yedekleme kuralları (Auto Backup yapılandırması)
Bazı SDK’lar (Adapty dahil) kendi Android Auto Backup yapılandırmalarıyla gelir. Yedekleme kuralları tanımlayan birden fazla SDK kullanıyorsanız Android manifest birleştirici android:fullBackupContent, android:dataExtractionRules veya android:allowBackup ifadelerini içeren bir hatayla başarısız olabilir.
Tipik hata belirtisi: Manifest merger failed: Attribute application@dataExtractionRules value=(@xml/sample_data_extraction_rules) is also present at [com.other.sdk:library:1.0.0] value=(@xml/other_sdk_data_extraction_rules)
Bunu çözmek için şunları yapmanız gerekir:
-
Manifest birleştiriciye yedeklemeyle ilgili nitelikler için uygulamanızın değerlerini kullanmasını söyleyin.
-
Adapty ve diğer SDK’lardan gelen yedekleme kurallarını tek bir XML dosyasında (veya Android 12+ için bir çift dosyada) birleştirin.
1. Manifest’e tools ad alanını ekleyin
Henüz eklenmemişse kök <manifest> etiketine tools ad alanını ekleyin:
<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 niteliklerini geçersiz kılın
Uygulamanızın AndroidManifest.xml dosyasında <application> etiketini güncelleyerek uygulamanızın son değerleri sağlamasını ve manifest birleştiriciye 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 da tools:replace içine ekleyin:
tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"
3. Birleştirilmiş yedekleme kuralları dosyaları oluşturun
app/src/main/res/xml/ altında 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ı biçimleri kullandığından her iki dosyayı da oluşturmak, uygulamanızın desteklediği tüm Android sürümlerinde uyumluluğu sağlar.
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 çıkarma kuralları biçimini 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 yedek içerik biçimini kullanır):
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<exclude domain="sharedpref" path="appsflyer-data"/>
<exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
</full-backup-content>
Bu kurulumla:
-
Adapty’nin yedekleme dışlamalarını (
AdaptySDKPrefs.xml) korunur. -
Diğer SDK’ların dışlamaları (örneğin
appsflyer-data) da uygulanır. -
Manifest birleştirici uygulamanızın yapılandırmasını kullanır ve çakışan yedekleme nitelikleri nedeniyle artık başarısız olmaz.
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 bu Activity’yi hatalı şekilde yeniden oluşturabilir veya yeniden kullanabilir. Bu durum satın alma sonucunun kaybolmasına veya iptal edilmiş olarak işleme alınmasına 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 başlatma modlarını 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" />