Android SDK'yı Yükle & 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’dır.
- AdaptyUI: Bu modül, kolayca çapraz platform paywall’lar oluşturmak için kullanılan, kod gerektirmeyen kullanıcı dostu bir araç olan Adapty Paywall Builder’ı kullanıyorsanız gereklidir. AdaptyUI, temel 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şlevler dahil tam kurulumu sergileyen ö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 kataloğu kullanıyorsanız, bağımlılıkları
libs.versions.tomldosyanıza ekleyin ve ardındanbuild.gradle.ktsiçinde referans verin
Bağımlılık çözümlenemiyorsa, Gradle scriptlerinizde mavenCentral() bulunduğundan emin olun.
Nasıl ekleneceğine dair talimat
Projenizde settings.gradle içinde dependencyResolutionManagement yoksa, üst seviye build.gradle dosyanızın 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.
Başka 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ı sayfasına 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
Günlükleme
Günlükleme sistemini kurma
Adapty, neler olduğunu anlamanıza yardımcı olmak için hataları ve diğer önemli bilgileri günlüğe kaydeder. Aşağıdaki düzeyler mevcuttur:
| Seviye | Açıklama |
|---|---|
AdaptyLogLevel.NONE | Hiçbir şey loglanmaz. Varsayılan değer |
AdaptyLogLevel.ERROR | Yalnızca hatalar loglanır |
AdaptyLogLevel.WARN | Hatalar ve kritik hatalara yol açmayan ancak dikkat edilmesi gereken SDK mesajları loglanır. |
AdaptyLogLevel.INFO | Hatalar, uyarılar ve çeşitli bilgi mesajları loglanır. |
AdaptyLogLevel.VERBOSE | Fonksiyon çağrıları, API sorguları vb. gibi hata ayıklama sırasında işe yarayabilecek her türlü ek bilgi loglanır. |
| 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ışı değiştirebilirsiniz:
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ı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.
Bu parametreyi kullanıcı gizliliğini artırmak, bölgesel veri koruma düzenlemelerine (GDPR veya CCPA gibi) uymak ya da IP tabanlı özelliklerin uygulamanız için gerekli olmadığı durumlarda gereksiz veri toplamayı azaltmak amacıyla kullanabilirsiniz.
Reklam ID’si (Ad ID) toplama ve paylaşmayı 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’dur.
Bu parametreyi, Play Store politikalarına uymak, reklam kimliği izin isteminin tetiklenmesini önlemek veya uygulamanızın Reklam Kimliğine dayalı reklam attribution ya da analitik gerektirmediği durumlarda kullanın.
AdaptyUI için medya önbelleği yapılandırmasını ayarlayın
AdaptyUI, performansı artırmak ve ağ kullanımını azaltmak için varsayılan olarak medyayı (resim ve video gibi) önbelleğe alır. Özel bir yapılandırma sağlayarak önbellek ayarlarını özelleştirebilirsiniz.
Medya önbelleğinin varsayılan boyutunu ve geçerlilik süresini değiştirmek için AdaptyUI.configureMediaCache kullanın. Bu adım isteğe bağlıdır — bu metodu çağırmazsanız varsayılan değerler kullanılır (100 MB disk boyutu, 7 gün geçerlilik süresi).
Parametreler:
| Parametre | Varlık | Açıklama |
|---|---|---|
| diskStorageSizeLimit | isteğe bağlı | Diskteki toplam önbellek boyutu (bayt cinsinden). Varsayılan değer 100 MB’tır. |
| diskCacheValidityTime | isteğe bağlı | Önbelleğe alınan dosyaların ne kadar süre geçerli sayılacağı. Varsayılan değer 7 gündür. |
Medya önbelleğini çalışma zamanında AdaptyUI.clearMediaCache(strategy) kullanarak temizleyebilirsiniz; burada strategy değeri CLEAR_ALL veya CLEAR_EXPIRED_ONLY olabilir.
Karartılmış hesap ID’lerini ayarlayın
Google Play, kullanıcı gizliliğini ve güvenliğini artırmak amacıyla belirli kullanım senaryolarında karartılmış hesap ID’leri gerektirir. Bu ID’ler, Google Play’in satın almaları kullanıcı bilgilerini anonim tutarak tanımlamasına yardımcı olur; bu durum özellikle dolandırıcılık önleme ve analitik açısından önem taşır.
Uygulamanız hassas kullanıcı verileri işliyorsa ya da belirli gizlilik düzenlemelerine uymak zorundaysanız bu ID’leri ayarlamanız gerekebilir. Karartılmış ID’ler, Google Play’in gerçek kullanıcı tanımlayıcılarını ifşa etmeden satın almaları takip etmesine olanak tanır.
Adapty’yi özel bir süreçte çalıştırma
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 ortaya çıkabilir.
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 process’te etkinleştirmeye çalışırsanız, SDK bir uyarı kaydeder ve etkinleştirmeyi atlar.
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ırmasını içerir. Yedekleme kuralları tanımlayan birden fazla SDK kullanıyorsanız, Android manifest birleştirici android:fullBackupContent, android:dataExtractionRules veya android:allowBackup gibi hatalar vererek 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ştiriciye, yedeklemeyle ilgili özellikler için uygulamanızın değerlerini kullanmasını söyleyin.
-
Adapty’nin ve diğer SDK’ların yedekleme kurallarını tek bir XML dosyasında birleştirin (ya da Android 12+ için bir çift dosya kullanın).
1. Manifest’inize 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 özelliklerini geçersiz kılın
Uygulamanızın AndroidManifest.xml dosyasında <application> etiketini güncelleyerek uygulamanızın nihai değerleri sağlamasını ve manifest birleştiricisininin kitaplık 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 ayarlarsa, bunu tools:replace içine de ekleyin:
tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"
3. Birleştirilmiş yedekleme kuralları dosyaları oluşturun
app/src/main/res/xml/ dizininde, Adapty’nin kurallarını diğer SDK’lardan gelen kurallarla birleştiren XML dosyaları oluşturun. Android, işletim sistemi sürümüne göre farklı yedekleme kuralı formatları kullandığından, her iki dosyayı da oluşturmak uygulamanızın desteklediği tüm Android sürümlerinde uyumluluğu garanti eder.
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 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 backup nitelikleri nedeniyle 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 geri döndüğünde Android bu Activity’yi yanlış şekilde yeniden oluşturabilir veya yeniden kullanabilir. Bu durum, satın alma sonucunun kaybolmasına ya da iptal edilmiş olarak değerlendirilmesine neden olabilir.
Satın almaların düzgün ç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" />