Platform API'leri
Yerel özelliklere erişin
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çeklemesi
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çeklemesi
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.modelAndroid API'lerini çağırma
androidMain tam Android SDK erişimine sahiptir; çünkü Android platformuna karşı derlenir.
import android.os.Build
fun deviceModel(): String = Build.MODELHazı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 injectedBir 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çeklemesi
androidMain/iosMainiç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.
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
- KMM Proje Yapısı
- expect ve actual
- İş Mantığını Paylaşma
- Platform API'leri