Skip to content

Latest commit

History

History
79 lines (61 loc) 路 1.76 KB

File metadata and controls

79 lines (61 loc) 路 1.76 KB

EXTENSION

CLLocationManager

public extension CLLocationManager

Methods

requestLocationWhenInUseAuthorization()

func requestLocationWhenInUseAuthorization() -> AnyPublisher<CLAuthorizationStatus, Never>
class LocationStore: ObservableObject {

    @Published var status: CLAuthorizationStatus = .notDetermined
    let manager = CLLocationManager()
    var cancellables = Set<AnyCancellable>()
    
    func requestPermission() {
        manager
            .requestLocationWhenInUseAuthorization()
            .assign(to: &$status)
    }
}

requestLocationAlwaysAuthorization()

func requestLocationAlwaysAuthorization() -> AnyPublisher<CLAuthorizationStatus, Never>
class LocationStore: ObservableObject {

    @Published var status: CLAuthorizationStatus = .notDetermined
    let manager = CLLocationManager()
    var cancellables = Set<AnyCancellable>()
    
    func requestPermission() {
        manager
            .requestLocationWhenInUseAuthorization()
            .assign(to: &$status)
    }
}

receiveLocationUpdates(oneTime:)

func receiveLocationUpdates(oneTime: Bool = false) -> AnyPublisher<[CLLocation], Error>
class LocationStore: ObservableObject {
    
    @Published var coordinate: CLLocationCoordinate2D = .zero
    let manager = CLLocationManager()
    var cancellables = Set<AnyCancellable>()
    
    func requestLocation() {
        manager
            .receiveLocationUpdates()
            .compactMap(\.last)
            .map(\.coordinate)
            .replaceError(with: .zero)
            .assign(to: &$coordinate)
    }
}

Parameters

Name Description
oneTime One time location update or constant updates, default: false