Kotlin Academy · Ders

Platform API'leri

Yerel özelliklere erişin

4. ders / 413 adım

Platform API'leri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Yerel özelliklere erişme

Ortak kodun bazen depolama, ayarlar, saat ve ağ iletişimi motoru gibi cihaz özelliklerine ihtiyacı olur. KMM, yerel API'lere temiz bir şekilde ulaşmak için çeşitli yollar sunar.

Temel değerler için expect/actual

Küçük platform değerleri için expect/actual kullanın. Ortak kod temiz kalırken her platform ayrıntıyı kendisi sağlar.

// commonMain
expect fun currentTimeMillis(): Long

// androidMain
actual fun currentTimeMillis(): Long = System.currentTimeMillis()

Platform kodu için DI

Daha esnek bir yaklaşım olarak ortak kodda bir arayüz tanımlayın ve her uygulamadan bir platform gerçeklemesini aktarın.

// commonMain
interface Storage {
    fun save(key: String, value: String)
    fun load(key: String): String?
}

Android gerçek­lemesi

Android, arayüzü SharedPreferences kullanarak gerçekler ve bunu ortak koda sunar.

// androidMain
import android.content.SharedPreferences

class AndroidStorage(private val prefs: SharedPreferences) : Storage {
    override fun save(key: String, value: String) {
        prefs.edit().putString(key, value).apply()
    }
    override fun load(key: String): String? = prefs.getString(key, null)
}

iOS gerçek­lemesi

iOS, aynı arayüzü Foundation çatısındaki NSUserDefaults ile gerçekler.

// iosMain
import platform.Foundation.NSUserDefaults

class IosStorage : Storage {
    private val defaults = NSUserDefaults.standardUserDefaults
    override fun save(key: String, value: String) = defaults.setObject(value, key)
    override fun load(key: String): String? = defaults.stringForKey(key)
}

Yerel iOS API'lerini çağırma

iosMain içinden Apple çatılarını doğrudan çağırabilirsiniz; çünkü Kotlin/Native bunlar için birlikte çalışabilirlik bağlamaları üretir.

import platform.UIKit.UIDevice

fun deviceModel(): String = UIDevice.currentDevice.model

Android API'lerini çağırma

androidMain tam Android SDK erişimine sahiptir; çünkü Android platformuna karşı derlenir.

import android.os.Build

fun deviceModel(): String = Build.MODEL

Hazır çok platformlu kütüphaneler

Çoğu zaman özel bir birlikte çalışabilirliğe ihtiyacınız olmaz. Kütüphaneler yaygın özellikleri zaten kapsüller:

  • multiplatform-settings — anahtar-değer depolama
  • Ktor — ağ iletişimi
  • SQLDelight — yerel veritabanı

Gerçeklemeleri sağlama

Platform gerçeklemelerini uygulama başlangıcında, genellikle Koin gibi bir DI çatısı aracılığıyla aktarın. Böylece ortak kod doğru gerçeklemeyi alır.

// Android: provide AndroidStorage(prefs)
// iOS: provide IosStorage()
// Shared Repository(storage) uses whichever was injected

Bir yaklaşım seçme

Yönergeler:

  • Küçük bir değer → expect/actual
  • Birden çok yöntem içeren davranış → arayüz + aktarma
  • Yaygın bir ihtiyaç → mevcut bir çok platformlu kütüphane kullanın

Çalıştırılabilir soyutlama örneği

Arayüz fikri, Kotlin'de oldukça basittir. Burada bellek içi bir gerçekleme, platform depolamasının yerini tutar.

interface Storage {
    fun save(key: String, value: String)
    fun load(key: String): String?
}

class MemoryStorage : Storage {
    private val map = mutableMapOf<String, String>()
    override fun save(key: String, value: String) { map[key] = value }
    override fun load(key: String): String? = map[key]
}

fun main() {
    val s: Storage = MemoryStorage()
    s.save("name", "Ada")
    println(s.load("name"))
}

Hızlı kontrol

Her platformda farklı şekilde gerçeklenen ve birden çok yönteme sahip bir depolama özelliğine ihtiyacınız var; ayrıca bu özelliğin kolayca sınanabilmesini istiyorsunuz. Önerilen yaklaşım nedir?

Özet

Yerel özelliklere temiz bir şekilde ulaşabilirsiniz:

  • Temel değerler için expect/actual
  • Davranış için ortak arayüz + aktarılan platform gerçek­lemesi
  • androidMain/iosMain içinde doğrudan birlikte çalışabilirlik
  • Mümkün olduğunda çok platformlu kütüphaneleri yeniden kullanma

Böylece KMM Temelleri kursu tamamlanmış olur.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“Platform API'leri” dersi ücretsiz mi?

Evet — “Platform API'leri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“Platform API'leri” dersinde ne öğreneceğim?

Yerel özelliklere erişin Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Platform API'leri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. KMM Proje Yapısı
  2. expect ve actual
  3. İş Mantığını Paylaşma
  4. Platform API'leri
← Kotlin Academy Sayfasına Dön