Wrapper for Apple CoreLocation framework with new Concurrency Model. No more delegate pattern or completion blocks.
dependencies: [ .package(url: "https://github.com/AsyncSwift/AsyncLocationKit.git", .upToNextMinor(from: "1.6.4")) ]pod 'AsyncLocationKit', :git => 'https://github.com/AsyncSwift/AsyncLocationKit.git', :tag => '1.6.4' import AsyncLocationKit let asyncLocationManager = AsyncLocationManager(desiredAccuracy: .bestAccuracy) let permission = await self.asyncLocationManager.requestAuthorizationWhenInUse() //returns CLAuthorizationStatusYou can use all methods from Apple CLLocationManager.
let coordinate = try await asyncLocationManager.requestLocation() //Request user location onceStart monitoring update of user location with AsyncStream.
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 cancelled, Stream finished automaticaly.