我已经实现了位置授权回调函数,并且可以工作,但是查看代码似乎可以触发该函数,但实际上并未按预期使用该函数。请您对我有多糟糕以及是否可以接受我所做的事情发表评论。
<label class='grunion-field-label checkbox'>
<input type='checkbox' name='g84-iagreetothetermsconditions' value='Yes' class='checkbox' required aria-required='true' />
I agree to the Terms & Conditions. <span>(required)</span>
</label>
答案 0 :(得分:0)
您似乎正在请求访问位置服务,然后立即检查授权状态,希望它立即可用。这不是它的工作方式。当您使用locationManager.requestWhenInUseAuthorization
请求定位时,请求将异步发生。
位置状态更改后,它将调用新状态locationManager(_:didChangeAuthorization)
中所包含的功能。当用户在出现的提示上点击“允许”或“拒绝”时,就会发生这种情况。当他们进入设置并在其中更改权限时,也可能发生
因此,为了使其更加清晰,请在请求位置之前检查并记录授权状态。使用以下方法来了解定位请求是成功还是失败:
func locationManager(CLLocationManager, didUpdateLocations: [CLLocation])
func locationManager(CLLocationManager, didFailWithError: Error)
您将使用CLLocationManager.locationServicesEnabled()
检查来包装对位置服务的请求。如果设备的位置信息处于关闭状态,那么请求位置信息只会导致错误。