La aplicación iOS no solicita permiso de location.

Mi aplicación Swift-iOS está diseñada para mostrar la location del usuario en un map. Sin embargo, la console de debugging de XCode me dice que necesito pedir permiso para mostrar la location del usuario. Creo que hago eso, pero el dialog nunca aparece.

Aquí está el post de error y debajo del ViewController donde CLLocationManager::requestWhenInUseAuthorization()

Error:

2014-06-30 21: 25: 13.927 RowingTracker2 [17642: 1608253] Intentando iniciar las actualizaciones de location de MapKit sin preguntar por la autorización de location. Debe llamar – [CLLocationManager requestWhenInUseAuthorization] o – [CLLocationManager requestAlwaysAuthorization] primero.

ViewController:

 import UIKit import MapKit import CoreLocation class ViewController: UIViewController, MKMapViewDelegate { @IBOutlet var mapview: MKMapView = nil var locationmgr : CLLocationManager! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. locationmgr = CLLocationManager() locationmgr.requestWhenInUseAuthorization() mapview.showsUserLocation = true } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

¿Cómo solicito autorización para usar la location? Puede encontrar el proyecto completo aquí . ( Commit )

Información

Incluso hacer henetworkingar ViewController de CLLocationManagerDelegate y configurar el delegado como tal aquí no ayuda.

A partir de iOS 8, debe llamar a una de las funciones de request … y agregar la input adecuada a su file Info.plist, ya sea NSLocationWhenInUseUsageDescription o NSLocationAlwaysUsageDescription .

Para más información, vea la reference aquí

Actualizar

Asegúrate de eso

  1. El map se centra en la location simulada.
  2. También asegúrese de que se simula una location. O bien, hazlo en el Área de debugging (abajo) de XCode (ver image), o hazlo en el simulador en Debug > Location .

Área de debugging: Simulación de ubicación en el área de depuración

Debe usar requestWhenInUseAuthorization y también debe crear un valor en yourapp-Info.plist denominado NSLocationWhenInUseUsageDescription

Utilizo NSLocationAlwaysUsageDescription con el valor como el text que aparecerá cuando solicite permiso, como por ejemplo

"Me gustaría tener permiso para espiarte 24/7"

También agregaría NSLocationWhenInUseUsageDescription con el valor como el post.