Où est mon iPhone?

Un tutoriel sur CoreLocation

Photo de Sylwia Bartyzel sur Unsplash

Cet article est un tutoriel sur la façon de récupérer l'emplacement géographique d'un iPhone ou d'un iPad à l'aide du framework Apples CoreLocation.

Je passe d'abord par toutes les étapes nécessaires pour configurer un auditeur pour les changements de l'emplacement des appareils.

À la fin de cet article, je vais tout emballer dans un éditeur de combinaison pratique.

N'hésitez pas à m'acheter un café si vous aimez cet article.

Le LocationManager

La classe principale qui fait tout le travail est CLLocationManager. Instancions-en un.

private let locationManager = CLLocationManager()

self.locationManager.delegate = self

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let location = locations.last else { return }
    print("Longitude: \(location.coordinate.longitude)")
    print("Latitude: \(location.coordinate.latitude)")
}

self.locationManager.desiredAccuracy = kCLLocationAccuracyBest

Dans mon cas, par exemple, je souhaite suivre l'emplacement même lorsque l'application n'est pas activement utilisée.

L'application doit en faire la demande. Par conséquent, nous devons faire l'appel suivant.

self.locationManager.requestAlwaysAuthorization()

Configuration

Ensuite, lorsque l'utilisateur démarre l'application, il sera invité à confirmer cette demande.

Demander une autorisation

De retour à notre code, il y a une étape de plus pour que tout fonctionne.

self.locationManager.startUpdatingLocation()

Emballer

Comme promis au début, j'ai mis le code complet dans une classe qui implémente un Combine-Publisher.

Au cas où vous n'êtes pas sûr de ce dont je parle ici, veuillez consulter la section Ressources à la fin du document pour une lecture plus approfondie.

import Combine
import CoreLocation
import Foundation

class LocationPublisher: NSObject {
    
    typealias Output = (longitude: Double, latitude: Double)
    typealias Failure = Never
    
    private let wrapped = PassthroughSubject<(Output), Failure>()
    
    private let locationManager = CLLocationManager()
    
    override init() {
        super.init()
        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
        self.locationManager.requestAlwaysAuthorization()
        self.locationManager.startUpdatingLocation()
    }
}

extension LocationPublisher: CLLocationManagerDelegate {
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let location = locations.last else { return }
        wrapped.send((longitude: location.coordinate.longitude, latitude: location.coordinate.latitude))
    }
}

extension LocationPublisher: Publisher {
    func receive<Downstream: Subscriber>(subscriber: Downstream) where Failure == Downstream.Failure, Output == Downstream.Input {
        wrapped.subscribe(subscriber)
    }
}

Il suffit de souscrire à ces modifications pour les traiter.

Cela peut être fait, en appelant sinket en lui passant une fonction.

let locationPublisher = LocationPublisher()
var cancellables = [AnyCancellable]()
locationPublisher.sink(receiveValue: doSomething).store(in: &cancellables)

func doSomething(location: (longitude: Double, latitude: Double)) {
    print("Longitude: \(longitude)")
    print("Latitude: \(latitude)")
}

N'hésitez pas à m'acheter un café si vous avez aimé cet article. .

Ressources

  • Ajout de services de localisation à votre application
  • Choix de l'autorisation des services de localisation à demander
  • Combiner

Suggested posts

Recherche d'informations sur les noms de domaine

Un extrait de Small, Sharp Software Tools par Brian P. Hogan

Recherche d'informations sur les noms de domaine

Lorsque vous faites une demande à facebook.com, votre ordinateur recherche le nom de domaine pour traduire ce nom de domaine en une adresse IP afin que votre ordinateur puisse établir cette connexion.

"Cette petite île change tout"

Comment nous avons conçu les activités en direct Lyft pour améliorer l'expérience des passagers

"Cette petite île change tout"

Un changeur de jeu pour le covoiturage De toutes les choses que nous faisons chez Lyft, la chorégraphie des ramassages entre les passagers et les chauffeurs est l'une des plus complexes et des plus conséquentes. Pour réussir cette chorégraphie, Lyft doit bien faire beaucoup de choses, mais il est essentiel de simplement tenir les coureurs au courant.

Related posts

Comment sauver la planète et gagner de l'argent

Comment sauver la planète et gagner de l'argent

Combien de fois avez-vous jeté une bouteille en plastique, un bocal en verre, une canette en aluminium ou un paquet d'énergie verte sans réfléchir à deux fois ? Combien de fois avez-vous souhaité pouvoir obtenir quelque chose en échange de leur recyclage ? Si vous êtes comme la plupart des gens, la réponse est probablement plusieurs fois. Le recyclage est souvent perçu comme un tracas, une corvée ou un devoir qui n'apporte aucun bénéfice immédiat ou tangible.

3 façons éprouvées d'améliorer vos compétences en écriture

Les avantages de l'écriture et les stratégies pour vous aider à le faire

3 façons éprouvées d'améliorer vos compétences en écriture

En 2022, avec la sortie de GPT-3, la compétence en écriture semble devenir moins importante. Avec l'IA, les personnes ayant une mauvaise écriture peuvent également générer du personnel de qualité.

L'art est-il toujours apolitique ?

L'art est-il toujours apolitique ?

Hier, nous avons fermé la porte du concours Eurovision de la chanson de cette année avec une grande finale scintillante et chaotique où la chanteuse suédoise Loreen a remporté le trophée, devenant la première femme à gagner deux fois et ramenant la couronne à la Suède 50 ans après qu'ABBA a remporté le concours. avec "Waterloo". Ils sont devenus l'un des plus grands groupes du canon de la musique pop.

Ce que vous pouvez faire pendant votre saison d'attente (attendre de décrocher votre premier emploi dans la technologie)

Ce que vous pouvez faire pendant votre saison d'attente (attendre de décrocher votre premier emploi dans la technologie)

Passer à une nouvelle carrière peut être extrêmement difficile si vous essayez de le faire seul. Il est important de trouver des partenaires de responsabilité qui sont au même niveau d'apprentissage que vous, qui partagent des objectifs, une ténacité et un dynamisme similaires.