2017-01-21 5 views
1

Ich entwickle eine Location-Tracking-App. Der Benutzer kann ein Tracking starten, tun, was er will (die App in den Hintergrund stellen, das Telefon sperren, etc.), zurück zur App gehen und das Tracking stoppen.iOS CoreLocation im Hintergrund

Ich möchte, dass das Tracking neu gestartet wird, wenn die App (vom System oder vom Benutzer) beendet wird. Um dies zu tun, sah ich in dem Dokument, dass ich den wichtigen Standortänderungsdienst verwenden muss, aber dieser Dienst sendet nicht genügend Standorte. Ist es möglich, den Standard-Ortungsdienst beim Neustart der App neu zu starten, dank des bedeutenden Standortänderungsdienstes? Oder würde die App abgelehnt?

Antwort

0

Folgende Methoden würde Ihre Anwendung aufwachen, auch wenn im Hintergrund getötet wird:

  1. Region Ereignisse
  2. Besuchen Ereignisse
  3. Signifikante Lage Ereignisse

Ihre Anmeldung wird gestartet Ortsschlüssel in der applicationDidFinishLaunchingWithOptions Methode. Hier ist ein Beispiel dafür, wie es elegant zu handhaben (von 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]; 
    } 
} 

Auch sind Sie nicht beschränkt auf der Verwendung wichtige Standortüberwachung oder Region Überwachung usw. Sie verschiedene Mechanismen für verschiedene Anwendungsfälle verwendet werden können. Z.B. Sie können die Regionsüberwachung verwenden, um eine Fallback-Region um den Benutzer herum einzurichten, und jedes Mal, wenn ein Exit-Ereignis eintritt, wird Ihre Anwendung mit dem Schlüssel location geweckt. Sie können dann die Standortdienste neu starten.

Verwandte Themen