نصب و شروع با Kotlin اندروید

نصب SDK کاتلین 0.2.1 با Gradle و JitPack، کلاینت مشترک، coroutine و Activity خرید فروشگاهی.

این SDK برای Android با Kotlin است؛ Kotlin Multiplatform یا iOS را پوشش نمی‌دهد. اپ فلاتر باید بسته فلاتر را نصب کند.

مخزن وابستگی

این بخش را با settings.gradle.kts موجود ادغام کنید؛ مخازن سایر کتابخانه‌ها را حذف نکنید:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        exclusiveContent {
            forRepository {
                maven {
                    name = "InappifyJitPack"
                    url = uri("https://jitpack.io")
                }
            }
            filter {
                includeGroup("com.github.InappifyLabs")
                includeGroup("com.github.cafebazaar.Poolakey")
            }
        }
    }
}

وابستگی برنامه

در app/build.gradle.kts:

dependencies {
    implementation("com.github.InappifyLabs:kotlin-sdk:v0.2.1")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
}

نسخه کامل تگ v0.2.1 را نگه دارید. نسخه coroutines باید با وابستگی‌های دیگر میزبان سازگار باشد. کتابخانه با JDK 17، Gradle 8.7، AGP 8.5.1، Kotlin 1.9.0 و compileSdk 34 ساخته می‌شود؛ minSdk آن 21 است. میزبان می‌تواند به حداقل بالاتری نیاز داشته باشد. هدف بایت‌کد JVM کتابخانه 1.8 است.

کلاینت مشترک

import android.content.Context
import com.inappify.sdk.InappifyClient
import com.inappify.sdk.InappifyV2Client

class BillingOwner(context: Context) : AutoCloseable {
    val client: InappifyV2Client = InappifyClient.create(context.applicationContext)
    override fun close() = client.close()
}

BillingOwner کلاس نمونه در اپ شماست. یک مالک در Application یا DI داشته باشید. ساخت کلاینت شبکه نمی‌فرستد؛ اتصال با configure آغاز می‌شود. close() را فقط پایان دائمی عمر مالک اجرا کنید؛ بستن صفحه خرید خروج از حساب نیست و نباید کلاینت سراسری را ببندد.

پیکربندی با coroutine

متدهای suspend را در coroutine مناسب میزبان، مثلاً سرویس شروع اپ یا viewModelScope.launch، فراخوانی کنید؛ از runBlocking روی رشته UI استفاده نکنید:

import com.inappify.sdk.*

suspend fun configureMobile(
    client: InappifyV2Client,
    apiKey: String,
    customerId: String? = null,
): InappifyResult<Unit> = client.configure(
    InappifyOptions(apiKey = apiKey, appUserIdentifier = customerId)
)

تنها ورودی اجباری apiKey است؛ customerId نمونه، به appUserIdentifier اختیاری نگاشت می‌شود. پیکربندی توضیح می‌دهد مهمان و حساب ازقبل‌واردشده چگونه شروع می‌شوند.

Activity و فروشگاه

خرید تازه بازار و مایکت به Activity فعلی نیاز دارد که ActivityResultRegistryOwner و LifecycleOwner را پیاده کند؛ ComponentActivity یا FragmentActivity مناسب است. Activity را در شیء سراسری نگه ندارید. اتصال‌ها و manifestهای فروشگاه همراه SDK هستند؛ helper یا AIDL موازی نسازید.

محصول و امضای اپ باید با تنظیم فروشگاه تطبیق داشته باشند و فروشگاه روی دستگاه نصب و حساب آن وارد شده باشد. بازار اشتراک را پشتیبانی می‌کند؛ اشتراک مایکت پشتیبانی نمی‌شود. مسیر و RSA از نشست سرور می‌آیند و ورودی configure نیستند.

آفرینگ · خرید با Package · کش و بازیابی · منبع نسخه