我的核心定位器不起作用

时间:2016-05-23 07:13:43

标签: ios swift authorization core-location cllocationmanager

在过去的两个小时里,我一直在试图找出为什么核心定位器找不到我的设备位置。

事实是:
- 它在模拟器或我的iPhone上不起作用 - 我可以接受应用程序访问应用程序中的位置,但之后没有任何事情发生 - 我正在使用Swift并使用Xcode 6.4
- 我已将NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription输入到我的info.plist中

import UIKit
import MapKit
import CoreLocation

class satelliteViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {

    @IBOutlet weak var mapView: MKMapView!
    @IBOutlet weak var mapTypeTitle: UIButton!

    var locationManager: CLLocationManager?

    override func viewDidLoad() {
        super.viewDidLoad()

        locationManager = CLLocationManager()
        locationManager!.delegate = self
        locationManager!.desiredAccuracy = kCLLocationAccuracyBest
        locationManager!.requestWhenInUseAuthorization()
        locationManager!.startUpdatingLocation() 
    }

    @IBAction func changeMapType(sender: AnyObject) {
        // Unimportant     
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

2 个答案:

答案 0 :(得分:0)

嘿,只需输入内部>即可启用应用的位置服务。设置>你的应用>位置> 始终或在使用应用时 ..祝您度过愉快的一天

答案 1 :(得分:-1)

info.plist中添加两个属性:NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription

enter image description here

然后检查ios版本是否为8.0或更高版本,

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    {
        [locationManager requestWhenInUseAuthorization];
        [locationManager requestAlwaysAuthorization];
    }

这是目标c,转换为swift !!

并确保通过设置应用为您的应用启用了位置服务。

确保您正在设置适当的代理并实施必要的方法。

希望这会有所帮助:)