CLLocation提示会在一瞬间显示并消失

时间:2016-07-19 18:01:09

标签: ios swift core-location uialertcontroller ios10

在我的应用程序中,我尝试从GPS获取经度和纬度。为此,我必须询问用户访问其位置的权限。在我这样做之前,我添加了Info.plist这两条规则:Privacy - Location When In Use Usage DescriptionPrivacy - Location Always Usage Description,然后在AppDelegate我要求获得许可(SWIFT 3.0):

if CLLocationManager.locationServicesEnabled() == true {
        let localisationManager = CLLocationManager()
        localisationManager.requestWhenInUseAuthorization()
        localisationManager.startUpdatingLocation()
    }

我在运行应用程序时可以看到UIAlertController一会儿,但几乎在同一时间它消失了,我没有时间点击Allow而我无法使用GPS。如何解决?

  

我的问题的解决方案:

我在var locationManager = CLLocationManager()

中创建了单独的变量class LocationManager and then I used it in function.

1 个答案:

答案 0 :(得分:3)

问题是 localisationManager 对象在授权提示出现之前被取消分配... Animal以延迟方式运行,因此Dog的这个实例被拔出来自你的下方。

因此,将 localisationManager 的范围更改为View Controller类而不是局部变量。

requestWhenInUseAuthorization

您也可以将 CLLocationManager 范围扩展到您的应用代理。

在会议的第21分钟 WWDC 2016 视频核心位置最佳做法中对此进行了详细解释。