2016-07-11 10 views
1

Hintergrund Speicherort funktioniert nicht nach Kill/Anwendung beenden. Ich verwende in meiner Anwendung NSLocationAlwaysUsageDescription und Hintergrund holen auf auch von Fähigkeiten, hier ist mein Code:Warum Hintergrund Speicherort funktioniert nicht nach Kill/App in iOS 9.3 beenden

import UIKit 
import CoreLocation 

class ViewController: UIViewController, CLLocationManagerDelegate{ 

    var locationManager: CLLocationManager! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     locationManager = CLLocationManager() 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.distanceFilter = 1000.0 
     locationManager.allowsBackgroundLocationUpdates = true 
     locationManager.startUpdatingLocation() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

     if(CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedWhenInUse || 
      CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedAlways){ 

      let currentLocation = manager.location 
      let notification = UILocalNotification() 
      notification.alertBody = " Lat \(currentLocation?.coordinate.latitude), Long \(currentLocation?.coordinate.longitude)" 
      notification.soundName = UILocalNotificationDefaultSoundName 
      UIApplication.sharedApplication().scheduleLocalNotification(notification) 

      print(" Lat \((currentLocation?.coordinate.latitude))!, Long \((currentLocation?.coordinate.longitude))!") 
     } 

    } 

} 

dieser Code funktioniert, wenn Klick-Taste zu Hause, aber nach Beendigung/kill App in diesem Zustand nicht funktioniert bitte geben Sie mir die Lösung hier, was ich in meinem Code verpasst habe.

+0

Hallo Rob jetzt habe ich die Lösung und mein Code funktioniert gut, wenn app in Kill/beenden jetzt und in der Lage auch Web-Service und die Lage zu nennen. –

+0

Aktualisierter Code funktioniert nicht im abgeschlossenen Zustand. Verwendet Xcode 8 und iOS 9.3.5 Gerät. Haben alle Codes nur in den View-Controllern geschrieben. Alles, was ich auf dem App-Delegaten schreiben muss. Bitte helfen Sie mir. – Prakash

Antwort

1

Nach einigen Änderungen habe ich die Lösung selbst, indem ich diese Änderungen und Code funktioniert im Hintergrundmodus und Vordergrundmodus jetzt in der Lage, Ort zu holen.

Swift 3

locationManager = CLLocationManager() 
    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.distanceFilter = 2000 
    if #available(iOS 9.0, *) { 
     locationManager.allowsBackgroundLocationUpdates = true 
    } 
    locationManager.startMonitoringSignificantLocationChanges() 
    locationManager.pausesLocationUpdatesAutomatically = true 
    locationManager.requestAlwaysAuthorization() 
+0

..Wissen Sie den Grund, warum aktualisierter Code von Ihnen funktioniert? Wenn nicht, dann lies das Apple Dokument. Es ist nicht notwendig, sowohl startUpdatingLocation() als auch startMonitoringSignificantLocationChanges() zu verwenden. Sie müssen nur startMonitoringSignificantLocationChanges() verwenden, um Ihre Aufgabe zu erledigen. Sie können mich im Zweifelsfall fragen. – Kirti

+0

Der obige Code funktioniert nicht im abgeschlossenen Zustand. Kannst du mir helfen? Xcode 8 und 9.3.5 Gerät – Prakash

+0

Ja, ich werde den obigen Code für Swift 3 nach einiger Zeit aktualisieren. –

Verwandte Themen