Kotlin Academy · Les

Platform-API's

Krijg toegang tot native functies

Les 4 van 413 stappen

Platform-API's is een gratis Kotlin Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Kotlin Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Kotlin Academy bevat in totaal 4 lessen.

Toegang tot systeemeigen functies

Gedeelde code heeft soms apparaatfuncties nodig — opslag, instellingen, de klok en netwerkfunctionaliteit. KMM biedt verschillende manieren om op een nette manier toegang te krijgen tot systeemeigen API's.

expect/actual voor primitieve waarden

Gebruik expect/actual voor kleine platformwaarden. De gemeenschappelijke code blijft overzichtelijk, terwijl elk platform de details invult.

// commonMain
expect fun currentTimeMillis(): Long

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

Afhankelijkheidsinjectie voor platformcode

Een flexibelere aanpak: definieer een interface in de gemeenschappelijke code en injecteer vanuit elke app een platformimplementatie.

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

Android-implementatie

Android implementeert de interface met SharedPreferences en stelt deze beschikbaar aan de gedeelde code.

// 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-implementatie

iOS implementeert dezelfde interface met NSUserDefaults uit het Foundation-framework.

// 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)
}

Systeemeigen iOS-API's aanroepen

Vanuit iosMain kun je Apple-frameworks rechtstreeks aanroepen, omdat Kotlin/Native hiervoor interoperabiliteitskoppelingen genereert.

import platform.UIKit.UIDevice

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

Android-API's aanroepen

androidMain heeft de volledige Android SDK beschikbaar, omdat het tegen het Android-platform wordt gecompileerd.

import android.os.Build

fun deviceModel(): String = Build.MODEL

Kant-en-klare multiplatformbibliotheken

Vaak heb je geen aangepaste interoperabiliteit nodig. Bibliotheken verpakken veelgebruikte functies al:

  • multiplatform-settings — opslag van sleutel-waardeparen
  • Ktor — netwerkcommunicatie
  • SQLDelight — lokale database

Implementaties beschikbaar stellen

Injecteer platformimplementaties bij het opstarten van de app, meestal via een afhankelijkheidsinjectieframework zoals Koin, zodat de gedeelde code de juiste implementatie ontvangt.

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

Een aanpak kiezen

Richtlijnen:

  • Kleine waarde → expect/actual
  • Gedrag met meerdere methoden → interface + injectie
  • Veelvoorkomende behoefte → gebruik een bestaande multiplatformbibliotheek

Een uitvoerbare demonstratie van abstractie

Het idee met de interface is gewone Kotlin. Hier staat een implementatie in het geheugen model voor platformopslag.

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"))
}

Korte controle

Je hebt een opslagfunctie met verschillende methoden nodig, die op elk platform anders wordt geïmplementeerd en gemakkelijk te testen is. Wat is de aanbevolen aanpak?

Samenvatting

Je kunt systeemeigen functies netjes gebruiken:

  • expect/actual voor primitieve waarden
  • Gemeenschappelijke interface + geïnjecteerde platformimplementatie voor gedrag
  • Rechtstreekse interoperabiliteit in androidMain/iosMain
  • Hergebruik multiplatformbibliotheken waar mogelijk

Daarmee is de cursus KMM Basics afgerond.

Gratis beginnen

Leer Kotlin met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “Platform-API's” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Kotlin Academy, waaronder “Platform-API's”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Kotlin Academy bevat in totaal 4 lessen.

Wat leer ik in “Platform-API's”?

Krijg toegang tot native functies Je oefent met Kotlin Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Kotlin Academy te beginnen?

Ervaring vooraf is niet nodig. Kotlin Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Platform-API's”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Kotlin Academy?

Ja. Elke les over Kotlin Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. KMM-projectstructuur
  2. expect en actual
  3. Bedrijfslogica delen
  4. Platform-API's
← Terug naar Kotlin Academy