Location Service Manager for Kotlin Multiplatform Mobile iOS and android
Android
ABCLocation
.onPermissionUpdated(this) { isGranted ->
println("onPermissionUpdated -> isGranted: $isGranted")
}
.onLocationUnavailable(this) {
println("onLocationUnavailable")
}
iOS
ABCLocation.Companion()
.onPermissionUpdated(target: self) { isGranted ->
print("onPermissionUpdated -> isGranted: \(isGranted)")
}
.onLocationUnavailable(target: self) {
print("onLocationUnavailable")
}
.onAlwaysAllowsPermissionRequired(target: self) {
print("onAlwaysAllowsPermissionRequired")
}
Android
ABCLocation.currentLocation { data ->
println("currentLocation -> data: $data")
}
iOS
ABCLocation.Companion().currentLocation { data in
print("currentLocation -> data: \(data)")
}
Android
ABCLocation
.onLocationUpdated(this) { data ->
println("onLocationUpdated -> data: $data")
}
.startLocationUpdating()
iOS
ABCLocation.Companion()
.onLocationUpdated(target: self) { data in
print("onLocationUpdated -> data: \(data)")
}
.startLocationUpdating()
Android
ABCLocation.stopLocationUpdating()
iOS
ABCLocation.Companion().stopLocationUpdating()
Add below gradle settings into your KMP (Kotlin Multiplatform Project)
plugins {
id("com.android.library")
kotlin("multiplatform")
}
val abcLocationLib = "com.linecorp.abc:kmm-location:0.2.4"
kotlin {
android()
ios {
binaries
.filterIsInstance<Framework>()
.forEach {
it.baseName = "shared"
it.transitiveExport = true
it.export(abcLocationLib)
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation(abcLocationLib)
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val androidMain by getting {
dependencies {
implementation("com.google.android.material:material:1.2.1")
implementation(abcLocationLib)
}
}
val androidTest by getting {
dependencies {
implementation(kotlin("test-junit"))
implementation("junit:junit:4.13.2")
implementation("androidx.test:core:1.0.0")
implementation("androidx.test:runner:1.1.0")
implementation("org.robolectric:robolectric:4.2")
}
}
val iosMain by getting {
dependencies {
implementation(abcLocationLib)
}
}
val iosTest by getting
}
}
Android
iOS
Podfile
with below setting in your project root.
use_frameworks!
platform :ios, '10.0'
install! 'cocoapods', :deterministic_uuids => false
target 'iosApp' do pod 'shared', :path => '../shared/' end
2. Run command `pod install` on the terminal
## Requirements
- iOS
- Deployment Target 10.0 or higher
- Android
- minSdkVersion 21