Android SDK'yı Kur 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 zorunlu olan SDK.
- AdaptyUI: Adapty Paywall Builder kullanıyorsanız ihtiyaç duyduğunuz modül. Adapty Paywall Builder, platformlar arası paywall’lar oluşturmayı kolaylaştıran, kod gerektirmeyen kullanıcı dostu bir araçtır. AdaptyUI, core modülle birlikte otomatik olarak etkinleştirilir.
Adapty SDK’nın gerçek bir uygulamaya nasıl entegre edildiğini görmek ister misiniz? Tam kurulumu, paywall gösterimini, satın alma işlemlerini ve diğer temel işlevleri 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ükleyin
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 ve ardındanbuild.gradle.ktsiçinde referans gösterin
Bağımlılık çözümlenemiyorsa, Gradle scriptlerinizde mavenCentral() olduğundan emin olun.
Nasıl ekleneceğine dair talimat
Projenizde settings.gradle dosyasında dependencyResolutionManagement yoksa, en üst seviye 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 aşağıdakini ekleyin:
dependencyResolutionManagement {
...
repositories {
...
mavenCentral()
}
}Adapty Android SDK 4.0 ön sürümdür. Gradle, dinamik sürüm aralıkları (+ veya latest.release gibi) aracılığıyla ön sürümleri otomatik olarak seçmez; bu nedenle tam sürümü elle belirtmeniz gerekir. adapty-bom sürümünü 4.0 ön sürümüne ayarlayın — örneğin io.adapty:adapty-bom:4.0.0-beta.1 veya libs.versions.toml dosyasında adaptyBom = "4.0.0-beta.1". BOM, sizin için eşleşen android-sdk ve android-ui sürümlerini otomatik olarak çözer. Bkz. Adapty Android SDK’yı v4’e Taşıma.
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 gidin.
- Api keys bölümünden Public SDK Key’i kopyalayın (Secret Key’i değil).
- Koddaki
"YOUR_PUBLIC_SDK_KEY"ifadesini değiştirin.
Ya da Adapty CLI kullanarak programatik olarak alın:
npm install -g adapty
adapty auth login
adapty apps list
Ya da doğrudan:
npx adapty auth login
adapty apps list
- Adapty başlatma işlemi için Public SDK key kullandığınızdan emin olun; Secret key yalnızca sunucu taraflı API için kullanılmalıdır.
- SDK key’leri her uygulama için benzersizdir, bu nedenle birden fazla uygulamanız varsa doğru olanı seçtiğinizden emin olun.
Herhangi bir Adapty SDK metodunu çağırmadan önce Adapty.activate işleminin tamamlanmasını bekleyin. Tam sıralama için Android SDK’da çağrı sırası bölümüne bakın.
Şimdi uygulamanızda paywallları 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 paywalllar 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
Kayıt Tutma
Kayıt tutma sistemini kurma
Adapty, neler olduğunu anlamanıza yardımcı olmak için hataları ve diğer önemli bilgileri kaydeder. Aşağıdaki seviyeleri kullanabilirsiniz:
| Seviye | Açıklama |
|---|---|
AdaptyLogLevel.NONE | Hiçbir şey günlüğe kaydedilmez. Varsayılan değer |
AdaptyLogLevel.ERROR | Yalnızca hatalar günlüğe kaydedilir |
AdaptyLogLevel.WARN | Hatalar ve SDK’dan kritik hatalara yol açmayan ancak dikkat edilmesi gereken mesajlar günlüğe kaydedilir. |
AdaptyLogLevel.INFO | Hatalar, uyarılar ve çeşitli bilgi mesajları günlüğe kaydedilir. |
AdaptyLogLevel.VERBOSE | Hata ayıklama sırasında işe yarayabilecek ek bilgiler (fonksiyon çağrıları, API sorguları vb. gibi) günlüğe kaydedilir. |
| Adapty’yi yapılandırmadan önce uygulamanızda log seviyesini ayarlayabilirsiniz. |
Günlük sistemi mesajlarını yönlendirme
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, 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şmayı 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.
IP tabanlı özellikler uygulamanız için gerekli değilse, kullanıcı gizliliğini artırmak, bölgesel veri koruma düzenlemelerine (GDPR veya CCPA gibi) uymak ya da gereksiz veri toplamayı azaltmak için bu parametreyi kullanabilirsiniz.
Reklam ID’si (Ad ID) toplama ve paylaşımını devre dışı bırakma
Adapty modülünü etkinleştirirken, kullanıcının reklam ID’si toplanması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 reklam kimliğine dayalı reklam attribution ya da analitik gerektirmiyorsa bu parametreyi kullanın.
AdaptyUI için medya önbellek yapılandırmasını ayarlama
AdaptyUI, varsayılan olarak performansı artırmak ve ağ kullanımını azaltmak için medyayı (görsel ve video gibi) önbelleğe alır. Özel bir yapılandırma sağlayarak önbellek ayarlarını özelleştirebilirsiniz.
AdaptyUI.configureMediaCache yöntemini kullanarak varsayılan önbellek boyutunu ve geçerlilik süresini geçersiz kılabilirsiniz. Bu adım 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ünlük geçerlilik).
Parametreler:
| Parametre | Zorunluluk | Açıklama |
|---|---|---|
| diskStorageSizeLimit | opsiyonel | Diskteki toplam önbellek boyutu (bayt cinsinden). Varsayılan değer 100 MB’tır. |
| diskCacheValidityTime | opsiyonel | Önbelleğe alınan dosyaların geçerli sayıldığı süre. Varsayılan değer 7 gündür. |
AdaptyUI.clearMediaCache(strategy) kullanarak medya önbelleğini çalışma zamanında temizleyebilirsiniz. strategy olarak CLEAR_ALL veya CLEAR_EXPIRED_ONLY değerlerini kullanabilirsiniz.
Gizlenmiş hesap kimliklerini ayarlama
Google Play, kullanıcı gizliliğini ve güvenliğini artırmak için belirli kullanım senaryolarında gizlenmiş hesap kimliklerini zorunlu kılar. Bu kimlikler, Google Play’in kullanıcı bilgilerini anonim tutarken satın almaları tanımlamasına yardımcı olur; bu durum özellikle dolandırıcılığı önleme ve analitik açısından önem taşır.
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ı açığa çıkarmadan satın almaları takip etmesini sağlar.
Adapty’yi özel bir process’te çalıştırma
Varsayılan olarak, Adapty yalnızca uygulamanızın ana process’inde çalışabilir. Uygulamanız birden fazla process kullanıyorsa, Adapty’yi yalnızca bir kez başlatın; aksi takdirde beklenmedik davranışlar oluşabilir.
Adapty’yi farklı bir process’te çalıştırmanız gerekiyorsa, bunu yapılandırmanızda belirtin:
Bu değeri ayarlamadan başka bir process’te Adapty’yi etkinleştirmeye çalışırsanız, SDK bir uyarı kaydedecek ve etkinleştirmeyi atlayacaktır.
Yerel access level’ları etkinleştirme
Varsayılan olarak, yerel access level’lar Android’de 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 birlikte gelir. Yedekleme kuralları tanımlayan birden fazla SDK kullanıyorsanız, Android manifest birleştirme işlemi android:fullBackupContent, android:dataExtractionRules veya android:allowBackup hatasıyla başarısız olabilir.
Tipik hata belirtileri: 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ştiriciyi, yedekleme ile ilgili öznitelikler için uygulamanızın değerlerini kullanması yönünde yönlendirin.
-
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. tools ad alanını manifest dosyanıza ekleyin
Henüz eklenmemişse, tools ad alanını kök <manifest> etiketine 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çindeki yedekleme özniteliklerini geçersiz kılın
Uygulamanızın AndroidManifest.xml dosyasında, <application> etiketini, uygulamanızın kesin değerleri sağlayacak ve manifest birleştiriciye kütüphane değerlerini değiştirmesini söyleyecek şekilde güncelleyin:
<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
Android’in 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 uyumluluğu garanti eder. app/src/main/res/xml/ dizini altında, Adapty’nin kurallarını diğer SDK’ların kurallarıyla birleştiren XML dosyaları oluşturun.
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 ya da 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çerik 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"/>
</full-backup-content>
Bu yapılandırmayla:
-
Adapty’nin yedekleme dışlamalar (
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 artık çakışan yedekleme özelliklerinde hata vermez.
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 geri döndüğünde Android bu Activity’yi yanlış şekilde yeniden oluşturabilir veya yeniden kullanabilir. Bu durum, satın alma sonucunun kaybolmasına veya iptal edilmiş olarak değerlendirilmesine 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 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" />