1. Il existe deux façons d'obtenir un positionnement en arrière-plan : service de localisation standard (appelant startUpdatingLocation de CLLocationManager) service de localisation à changement significatif (appelant startMonitoringSignificantLocationChanges de CLLocationManager) 2. 🎜 >Le premier (startUpdatingLocation) est un positionnement standard. Si vous souhaitez l'utiliser en arrière-plan, vous devez ajouter l'attribut Modes d'arrière-plan requis dans le fichier info.plist et sélectionner la valeur des registres d'application pour les mises à jour d'emplacement. Lorsque le premier (startUpdatingLocation) s'exécute en arrière-plan, il peut être suspendu ou interrompu par le système en raison de problèmes de ressources, mais il sera réveillé une fois qu'il y aura une mise à jour. Cependant, lorsque le système est encore à court de ressources pendant. la mise à jour, elle sera suspendue. Appel différé des délégués. Si vos exigences en temps réel sont élevées, cela peut ne pas convenir et il sera difficile de contrôler les performances de la machine de l'utilisateur. Le premier (startUpdatingLocation) ne sera plus réveillé s'il est fermé manuellement par l'utilisateur. L'ancien positionnement est basé sur le positionnement GPS/station de base/wifi. Le framework CoreLocation utilisé a son propre ensemble de règles. Ce dernier (startMonitoringSignificantLocationChanges) utilise le positionnement de la station de base, l'appareil doit donc avoir un module téléphonique. L'attribut xx peut être défini dans la liste pour limiter les appareils pouvant être téléchargés et installés. Ce dernier (startMonitoringSignificantLocationChanges) sera réveillé pour appeler le délégué qu'il soit en arrière-plan ou fermé manuellement par l'utilisateur. Il n'y a que 3 méthodes pour empêcher sa mise à jour. (1) L'utilisateur désactive les services de positionnement (2) L'utilisateur désactive les services de positionnement pour l'application (3) L'appareil est en mode avion ou ne peut pas allumer le matériel nécessaire (je suppose qu'il s'agit du matériel du module de positionnement). Quand cette dernière (startMonitoringSignificantLocationChanges) sera-t-elle mise à jour ? Il est mis à jour lorsque la station de base est remplacée. La fréquence de mise à jour est donc liée à la densité des stations de base. Les zones urbaines sont mises à jour plus fréquemment que les zones suburbaines. Par conséquent, de nombreux étudiants ont déclaré qu’il n’y avait pas de mise à jour car ils se trouvaient toujours dans le même groupe de stations de base. Le premier consomme plus d’énergie et a une précision plus élevée que le second. 3. Caractéristiques communes entre les deux : Les deux rappellent la même méthode déléguée lors de la mise à jour des informations de localisation : -(void)locationManager:(CLLocationManager )manager didUpdateLocations:(NSArray )locations;4. Télécharger des informations : Étant donné que la tâche en arrière-plan ne dispose que d'un temps limité pour effectuer les opérations nécessaires, si elle n'est pas terminée avant l'expiration du délai (comme une requête réseau), l'application sera fermée. Voici une méthode pour demander 10 minutes supplémentaires pour que vous puissiez effectuer l'opération souhaitée et postuler à une tâche en arrière-plan : startBackgroundTaskWithExpirationHandler (je n'entrerai pas dans les détails, vous pouvez vérifier les informations sur la façon de l'utiliser). 5. Résumé : Les deux méthodes ont leurs propres avantages et inconvénients, qui sont déterminés en fonction du scénario d'utilisation. Les applications exécutées au premier plan nécessitent généralement un positionnement précis en temps réel et ont une durée d'exécution limitée. positionnement standard, comme les applications de navigation. Si la vitesse de déplacement est rapide (la distance change considérablement) et que le positionnement (surveillance) est requis pendant une longue période, cette dernière solution peut être envisagée, comme une application d'appel de taxi. Cité d'ici
1. Il existe deux façons d'obtenir un positionnement en arrière-plan :
service de localisation standard (appelant startUpdatingLocation de CLLocationManager)
service de localisation à changement significatif (appelant startMonitoringSignificantLocationChanges de CLLocationManager)
2. 🎜 >Le premier (startUpdatingLocation) est un positionnement standard. Si vous souhaitez l'utiliser en arrière-plan, vous devez ajouter l'attribut Modes d'arrière-plan requis dans le fichier info.plist et sélectionner la valeur des registres d'application pour les mises à jour d'emplacement.
Lorsque le premier (startUpdatingLocation) s'exécute en arrière-plan, il peut être suspendu ou interrompu par le système en raison de problèmes de ressources, mais il sera réveillé une fois qu'il y aura une mise à jour. Cependant, lorsque le système est encore à court de ressources pendant. la mise à jour, elle sera suspendue. Appel différé des délégués. Si vos exigences en temps réel sont élevées, cela peut ne pas convenir et il sera difficile de contrôler les performances de la machine de l'utilisateur.
Le premier (startUpdatingLocation) ne sera plus réveillé s'il est fermé manuellement par l'utilisateur.
L'ancien positionnement est basé sur le positionnement GPS/station de base/wifi. Le framework CoreLocation utilisé a son propre ensemble de règles.
Ce dernier (startMonitoringSignificantLocationChanges) utilise le positionnement de la station de base, l'appareil doit donc avoir un module téléphonique. L'attribut xx peut être défini dans la liste pour limiter les appareils pouvant être téléchargés et installés.
Ce dernier (startMonitoringSignificantLocationChanges) sera réveillé pour appeler le délégué qu'il soit en arrière-plan ou fermé manuellement par l'utilisateur. Il n'y a que 3 méthodes pour empêcher sa mise à jour. (1) L'utilisateur désactive les services de positionnement (2) L'utilisateur désactive les services de positionnement pour l'application (3) L'appareil est en mode avion ou ne peut pas allumer le matériel nécessaire (je suppose qu'il s'agit du matériel du module de positionnement).
Quand cette dernière (startMonitoringSignificantLocationChanges) sera-t-elle mise à jour ? Il est mis à jour lorsque la station de base est remplacée. La fréquence de mise à jour est donc liée à la densité des stations de base. Les zones urbaines sont mises à jour plus fréquemment que les zones suburbaines. Par conséquent, de nombreux étudiants ont déclaré qu’il n’y avait pas de mise à jour car ils se trouvaient toujours dans le même groupe de stations de base.
Le premier consomme plus d’énergie et a une précision plus élevée que le second.
3. Caractéristiques communes entre les deux :
Les deux rappellent la même méthode déléguée lors de la mise à jour des informations de localisation : -(void)locationManager:(CLLocationManager
)manager didUpdateLocations:(NSArray )locations;4. Télécharger des informations :
Étant donné que la tâche en arrière-plan ne dispose que d'un temps limité pour effectuer les opérations nécessaires, si elle n'est pas terminée avant l'expiration du délai (comme une requête réseau), l'application sera fermée. Voici une méthode pour demander 10 minutes supplémentaires pour que vous puissiez effectuer l'opération souhaitée et postuler à une tâche en arrière-plan : startBackgroundTaskWithExpirationHandler (je n'entrerai pas dans les détails, vous pouvez vérifier les informations sur la façon de l'utiliser).
5. Résumé :
Les deux méthodes ont leurs propres avantages et inconvénients, qui sont déterminés en fonction du scénario d'utilisation. Les applications exécutées au premier plan nécessitent généralement un positionnement précis en temps réel et ont une durée d'exécution limitée. positionnement standard, comme les applications de navigation. Si la vitesse de déplacement est rapide (la distance change considérablement) et que le positionnement (surveillance) est requis pendant une longue période, cette dernière solution peut être envisagée, comme une application d'appel de taxi.
Cité d'ici