Support SDK like Firebase to each platform in Kotlin Multiplatform Mobile

TYLENOL
Apr 12, 2021

Setup

  1. Setup cocoapod in iOS Project, and install pod dependencies.
  2. Setup cocoapod in shared module build.gradle
plugins {
kotlin("multiplatform")
id("com.android.library")
kotlin("native.cocoapods") // apply plugin
}
kotlin { // ...
cocoapods {
summary = "Meerkat Multiplatform"
homepage = "https://github.com/han9dong1ju1/Meerkat"

ios.deploymentTarget = "13.2"

pod("FirebaseAnalytics")
}
// ...
}

common

expect object FirebaseAnalytics {

fun setUserProperty(key: String, value: String)

fun logEvent(name: String, vararg params: Pair<String, String>)

}

val Firebase.analytics get() = FirebaseAnalytics

iOS

actual object FirebaseAnalytics {

actual fun setUserProperty(key: String, value: String) {
FIRAnalytics.setUserPropertyString(key, value)
}

actual fun logEvent(name: String, vararg params: Pair<String, String>) {
FIRAnalytics.logEventWithName(name, *params.toMap())
}

}

Android

actual object FirebaseAnalytics {


actual fun setUserProperty(key: String, value: String) {
Firebase.analytics.setUserProperty(key, value)
}

actual fun logEvent(name: String, vararg params: Pair<String, String>) {
Firebase.analytics.logEvent(name) {
params.forEach { (key, value) -> param(key, value) }
}
}

}

--

--