在我的应用程序中,我尝试从GPS获取经度和纬度。为此,我必须询问用户访问其位置的权限。在我这样做之前,我添加了Info.plist
这两条规则:Privacy - Location When In Use Usage Description
和Privacy - 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.
答案 0 :(得分:3)
问题是 localisationManager 对象在授权提示出现之前被取消分配... Animal
以延迟方式运行,因此Dog
的这个实例被拔出来自你的下方。
因此,将 localisationManager 的范围更改为View Controller类而不是局部变量。
requestWhenInUseAuthorization
您也可以将 CLLocationManager 范围扩展到您的应用代理。
在会议的第21分钟 WWDC 2016 视频核心位置最佳做法中对此进行了详细解释。