AsyncLocationKit alternatives and similar libraries
Based on the "Location" category.
Alternatively, view AsyncLocationKit alternatives based on common mentions on social networks and blogs.
-
SwiftLocation
🛰 CoreLocation Made Easy - Efficient & Easy Location Tracker, IP Location, Gecoder, Geofence, Autocomplete, Beacon Ranging, Broadcaster and Visits Monitoring -
LocationManager
Easily get the device's current location on iOS. -
SOMotionDetector
Simple library to detect motion type (walking, running, automotive) and count users steps. This library will make motion detection much more easily. -
LocationPicker
A ready for use and fully customizable location picker for your app -
IngeoSDK
The most power-efficient and lightweight iOS location manager for Swift and ObjC -
NominatimKit
A Swift wrapper for forward and reverse geocoding of OpenStreetMap data
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of AsyncLocationKit or a related project?
README
AsyncLocationKit
Wrapper for Apple CoreLocation
framework with new Concurency Model. No more delegate
pattern or completion blocks
.
Install
SPM
dependencies: [
.package(url: "https://github.com/AsyncSwift/AsyncLocationKit.git", .upToNextMinor(from: "1.5.5"))
]
Cocoapods
pod 'AsyncLocationKit', :git => 'https://github.com/AsyncSwift/AsyncLocationKit.git', :tag => '1.5.5'
:warning: Initialize AsyncLocationManager only synchronously on MainThread
import AsyncLocationKit
let asyncLocationManager = AsyncLocationManager(desiredAccuracy: .bestAccuracy)
Task {
let permission = await self.asyncLocationManager.requestAuthorizationWhenInUse() //returns CLAuthorizationStatus
}
You can use all methods from Apple CLLocationManager
.
Task {
let coordinate = try await asyncLocationManager.requestLocation() //Request user location once
}
Start monitoring update of user location with AsyncStream
.
Task {
for await locationUpdateEvent in await asyncLocationManager.startUpdatingLocation() {
switch locationUpdateEvent {
case .didUpdateLocations(let locations):
// do something
case .didFailWith(let error):
// do something
case .didPaused, .didResume:
break
}
}
}
If Task
was canceled, Stream finished automaticaly.