Support SDK like Firebase to each platform in Kotlin Multiplatform Mobile
Setup
- Setup cocoapod in iOS Project, and install pod dependencies.
- 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) }
}
}
}