0Pricing
Kotlin Academy · درس

واجهات API للمنصة

استخدموا الميزات الأصلية

واجهات API للمنصة درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

الوصول إلى الميزات الأصلية

تحتاج الشيفرة المشتركة أحيانًا إلى ميزات الجهاز — مثل التخزين والإعدادات والساعة ومحرك الشبكات. يوفّر KMM عدة طرق للوصول إلى واجهات برمجة التطبيقات الأصلية بطريقة واضحة.

expect/actual للقيم الأساسية

بالنسبة إلى قيم المنصة الصغيرة، استخدم expect/actual. تبقى الشيفرة المشتركة نظيفة، بينما تتولى كل منصة توفير التفاصيل.

// commonMain
expect fun currentTimeMillis(): Long

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

حقن اعتماديات شيفرة المنصة

يتمثل نهج أكثر مرونة في تعريف واجهة في الشيفرة المشتركة وحقن تنفيذ خاص بالمنصة من كل تطبيق.

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

تنفيذ Android

تطبّق Android الواجهة باستخدام SharedPreferences، وتوفّرها للشيفرة المشتركة.

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

تطبّق iOS الواجهة نفسها باستخدام NSUserDefaults من إطار العمل 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)
}

استدعاء واجهات برمجة التطبيقات الأصلية في iOS

من iosMain، يمكنك استدعاء أطر Apple مباشرةً، لأن Kotlin/Native ينشئ روابط التكامل البيني لها.

import platform.UIKit.UIDevice

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

استدعاء واجهات برمجة تطبيقات Android

تتوفر في androidMain حزمة Android SDK الكاملة، لأنها تُترجم بالاعتماد على منصة Android.

import android.os.Build

fun deviceModel(): String = Build.MODEL

مكتبات متعددة المنصات جاهزة

غالبًا لا تحتاج إلى تكامل بيني مخصص؛ فهناك مكتبات تغلّف الميزات الشائعة مسبقًا:

  • multiplatform-settings — تخزين أزواج المفتاح والقيمة
  • Ktor — الاتصال بالشبكات
  • SQLDelight — قاعدة بيانات محلية

توفير عمليات التنفيذ

احقن عمليات التنفيذ الخاصة بالمنصة عند بدء تشغيل التطبيق، عادةً عبر إطار عمل لحقن الاعتماديات مثل Koin، كي تحصل الشيفرة المشتركة على التنفيذ الصحيح.

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

اختيار النهج

إرشادات:

  • قيمة صغيرة جدًا → expect/actual
  • سلوك يضم عدة دوال → واجهة + حقن
  • احتياج شائع → استخدم مكتبة متعددة المنصات موجودة

مثال عملي على التجريد

فكرة الواجهة مكتوبة بلغة Kotlin العادية. هنا يحلّ تنفيذ داخل الذاكرة محل مخزن المنصة.

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

تحقق سريع

تحتاج إلى ميزة تخزين تضم عدة دوال، ويُنفَّذ كل منها بطريقة مختلفة على كل منصة، مع إمكانية اختبارها بسهولة. ما النهج الموصى به؟

مراجعة سريعة

يمكنك الوصول إلى الميزات الأصلية بسهولة ووضوح:

  • expect/actual للقيم الأساسية
  • واجهة مشتركة + تنفيذ للمنصة يتم حقنه للسلوك
  • تكامل بيني مباشر في androidMain/iosMain
  • إعادة استخدام مكتبات متعددة المنصات متى أمكن

وبذلك تكون قد أكملت دورة KMM Basics.

الأسئلة الشائعة

هل درس «واجهات API للمنصة» مجاني؟

نعم — نص درس «واجهات API للمنصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «واجهات API للمنصة»؟

استخدموا الميزات الأصلية تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «واجهات API للمنصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية مشروع KMM
  2. expect وactual
  3. مشاركة منطق الأعمال
  4. واجهات API للمنصة
← العودة إلى Kotlin Academy