2015-06-17 5 views
-1

Я пытаюсь запросить местоположение пользователя при использовании приложения. Я добавил NSLocationWhenInUseUsage в свой plist. Приложение не вызывает сбоев или других ошибок. Приложение только начинается, и нет всплывающего окна для запроса разрешения пользователя.Как запросить местоположение пользователя в Xcode 6.3.2

import UIKit 
import MapKit 
import CoreLocation 

class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate { 

@IBOutlet weak var map: MKMapView! 

var locationManager = CLLocationManager() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 


    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.requestWhenInUseAuthorization() 
    locationManager.startUpdatingLocation() 
    locationManager.requestWhenInUseAuthorization() 

Я также добавил эту функцию, чтобы мой код:

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

    println(locations) 

Кроме того, я не адепт программист, поэтому простой ответ был бы лучше.

ответ

0

нет каких-либо всплывающее окно, чтобы запросить разрешение пользователя

Даже если вы звоните locationManager.requestWhenInUseAuthorization(), не будет никакого диалогового, если (1) место службы не включены, и (2) местоположение авторизация для этого приложения не определена.

Другими словами, диалог появляется только в том случае, если пользователь может осмысленно разрешить. Пользователь не может разрешить, если службы определения местоположения недоступны, если авторизация уже была лишена или если это устройство ограничено.

+0

Так как я могу проверить статус авторизации? Я предполагаю, что я сделаю инструкцию if then перед locationManager.requestWhenInUseAuthorization, но я не знаю, какие команды использовать для проверки на это (извините, я не очень разбираюсь в словаре о том, как обращаться ко всем другим части кода). - –

+0

См. Мои объяснения здесь: http://stackoverflow.com/a/30495310/341994 – matt

+0

Это написано в объективе c. Я действительно недостаточно понимаю, чтобы расшифровать это объяснение. Было бы здорово, если бы я мог найти где-нибудь, где я могу просто взглянуть на код и узнать его таким образом. –

0

Как матовый говорит в своем ответе, вам нужно сначала проверить статус авторизации. Если вы не определились, ТОГДА вы должны позвонить requestWhenInUseAuthorization.

Как только вы это сделали, вам нужно дождаться вызова вашего метода делегата locationManager:didChangeAuthorizationStatus. Когда пользователь завершает авторизацию служб определения местоположения (или отрицает их), будет вызван метод делегирования.

+0

Итак, как я могу проверить статус авторизации? Я предполагаю, что я сделаю инструкцию if then перед locationManager.requestWhenInUseAuthorization, но я не знаю, какие команды использовать для проверки на это (извините, я не очень разбираюсь в словаре о том, как обращаться ко всем другим части кода). –

+0

Вы должны действительно прочитать ссылку класса CLLocationManager в документах Xcode. Существует метод класса authorizationStatus, который позволяет запросить его. –

Смежные вопросы