2017-01-21 2 views
1

Je développe une application de suivi de localisation. L'utilisateur peut commencer un suivi, faire ce qu'il veut (mettre l'application en arrière-plan, verrouiller le téléphone, etc), revenir à l'application et arrêter le suivi.iOS CoreLocation en arrière-plan

Je voudrais que le suivi redémarre si l'application est supprimée (par le système ou l'utilisateur). Pour ce faire, j'ai vu dans le document que je devais utiliser le service important de changement d'emplacement, mais ce service n'envoie pas suffisamment d'emplacements. Est-il possible de redémarrer le service de localisation standard lorsque l'application est redémarrée grâce au service de changement de localisation significatif? Ou l'application serait-elle rejetée?

Répondre

0

méthodes suivantes se réveillait votre demande vers le haut même s'il est tué en arrière-plan:

  1. événements Région
  2. événements Visite
  3. événements de localisation importants

Votre demande sera lancée avec clé de localisation dans la méthode applicationDidFinishLaunchingWithOptions. Voici un exemple sur la façon de le manipuler avec grâce (de http://nshipster.com/launch-options/):

// .h 
@import CoreLocation; 

@interface AppDelegate() <CLLocationManagerDelegate> 
@property (readwrite, nonatomic, strong) CLLocationManager *locationManager; 
@end 

// .m 
- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // ... 

    if (![CLLocationManager locationServicesEnabled]) { 
     [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Location Services Disabled", nil) 
            message:NSLocalizedString(@"You currently have all location services for this device disabled. If you proceed, you will be asked to confirm whether location services should be reenabled.", nil) 
            delegate:nil 
          cancelButtonTitle:NSLocalizedString(@"OK", nil) 
          otherButtonTitles:nil] show]; 
    } else { 
     self.locationManager = [[CLLocationManager alloc] init]; 
     self.locationManager.delegate = self; 
     [self.locationManager startMonitoringSignificantLocationChanges]; 
    } 

    if (launchOptions[UIApplicationLaunchOptionsLocationKey]) { 
     [self.locationManager startUpdatingLocation]; 
    } 
} 

De plus, vous n'êtes pas limité à l'utilisation de surveillance de localisation important ou la surveillance de la région, etc. Vous pouvez utiliser différents mécanismes pour différents cas d'utilisation. Par exemple. Vous pouvez utiliser la surveillance de région pour configurer une région de repli autour de l'utilisateur et à chaque fois qu'un événement de sortie se produit, votre application sera réveillée avec la touche location. Vous pouvez ensuite redémarrer les services de localisation.