gpt4 book ai didi

ios - CLLocationManager didUpdateLocations 没有被称为带有 plist 条目的 iOS 8

转载 作者:可可西里 更新时间:2023-11-01 00:37:40 26 4
gpt4 key购买 nike

我在使用 CLLocationManager 时遇到了一些问题。此代码曾经在 iOS 8.2 上工作,但自从升级到 8.3 后,它就不起作用了。以下是设置启动时调用的位置管理器的代码。

let distanceThreshold:CLLocationDistance = 100.0

var currentLocation:CLLocationCoordinate2D?

override init() {
assert(locMan == nil)
super.init()
locMan = self

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
currentLocation = manager.location.coordinate

if UIApplication.sharedApplication().applicationState == .Background {
PlacesManager.fetchNearbyPlaces(LocationManager.getLocationManager().currentLocation!, radius: distanceThreshold, callback: placesCallback)
}
}

使用这段代码,didUpdateLocations 永远不会被调用,尽管它之前被调用过。我已将相关条目添加到 Info.plist 文件中: Info.plist screenshot

我已经在设备和模拟器上都试过了,但都不起作用。事实上,如果我删除应用程序并重新安装,它似乎不再请求位置授权。

我知道我错过了一些愚蠢的东西,但我无法锻炼它到底是什么。

如果有人能提供任何帮助,我将不胜感激。

干杯,杰拉德

最佳答案

Anna 的回答:

CLLocationManager 文档说:“要配置和使用 CLLocationManager 对象来传递事件...创建 CLLocationManager 类的实例并将对它的强引用存储在您的应用程序中的某个位置。保持对位置管理器对象的强引用在涉及该对象的所有任务完成之前都是必需的。由于大多数位置管理器任务异步运行,因此将位置管理器存储在局部变量中是不够的。”

关于ios - CLLocationManager didUpdateLocations 没有被称为带有 plist 条目的 iOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29846349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com