0Pricing
Kotlin Academy · Lección

API de plataforma

Acceda a funciones nativas

API de plataforma es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

Acceso a funciones nativas

En ocasiones, el código compartido necesita acceder a funciones del dispositivo: almacenamiento, configuración, reloj y conectividad de red. KMM ofrece varias formas de acceder a las API nativas de manera limpia.

expect/actual para tipos primitivos

Para valores pequeños específicos de la plataforma, use expect/actual. El código común se mantiene limpio, mientras cada plataforma proporciona los detalles.

// commonMain
expect fun currentTimeMillis(): Long

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

Inyección de dependencias del código de plataforma

Un enfoque más flexible: defina una interfaz en el código común e inyecte una implementación de la plataforma desde cada aplicación.

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

Implementación para Android

Android implementa la interfaz mediante SharedPreferences y la proporciona al código compartido.

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

Implementación para iOS

iOS implementa la misma interfaz mediante NSUserDefaults del framework Foundation.

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

Llamar a las API nativas de iOS

Desde iosMain puede llamar directamente a los frameworks de Apple, porque Kotlin/Native genera enlaces de interoperabilidad para ellos.

import platform.UIKit.UIDevice

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

Llamar a las API de Android

androidMain tiene disponible todo el SDK de Android, ya que se compila con la plataforma Android.

import android.os.Build

fun deviceModel(): String = Build.MODEL

Bibliotecas multiplataforma listas para usar

A menudo no necesita una interoperabilidad personalizada. Ya existen bibliotecas que encapsulan funciones habituales:

  • multiplatform-settings — almacenamiento de clave-valor
  • Ktor — redes
  • SQLDelight — base de datos local

Proporcionar implementaciones

Inyecte las implementaciones de plataforma al iniciar la aplicación, normalmente mediante un framework de DI como Koin, para que el código compartido reciba la implementación adecuada.

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

Elegir un enfoque

Orientaciones:

  • Valor pequeño → expect/actual
  • Comportamiento con varios métodos → interfaz + inyección
  • Necesidad común → use una biblioteca multiplataforma existente

Demostración ejecutable de una abstracción

La idea de la interfaz se expresa con Kotlin básico. Aquí, una implementación en memoria simula un almacén de la plataforma.

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

Comprobación rápida

Necesita una función de almacenamiento con varios métodos, implementada de forma diferente en cada plataforma y fácil de probar. ¿Cuál es el enfoque recomendado?

Resumen

Puede acceder a las funciones nativas de manera limpia:

  • expect/actual para tipos primitivos
  • Interfaz común + implementación de plataforma inyectada para comportamientos
  • Interoperabilidad directa en androidMain/iosMain
  • Reutilice bibliotecas multiplataforma siempre que sea posible

Con esto termina el curso Fundamentos de KMM.

Preguntas frecuentes

¿La lección «API de plataforma» es gratis?

Sí — el texto completo de «API de plataforma» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «API de plataforma»?

Acceda a funciones nativas Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «API de plataforma»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Estructura de proyectos KMM
  2. expect y actual
  3. Compartir la lógica de negocio
  4. API de plataforma
← Volver a Kotlin Academy