是否可以接受位置授权回调?

时间:2019-04-16 08:28:10

标签: ios swift core-location

我已经实现了位置授权回调函数,并且可以工作,但是查看代码似乎可以触发该函数,但实际上并未按预期使用该函数。请您对我有多糟糕以及是否可以接受我所做的事情发表评论。

<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 &amp; Conditions. <span>(required)</span>
</label>

1 个答案:

答案 0 :(得分:0)

您似乎正在请求访问位置服务,然后立即检查授权状态,希望它立即可用。这不是它的工作方式。当您使用locationManager.requestWhenInUseAuthorization请求定位时,请求将异步发生。

位置状态更改后,它将调用新状态locationManager(_:didChangeAuthorization)中所包含的功能。当用户在出现的提示上点击“允许”或“拒绝”时,就会发生这种情况。当他们进入设置并在其中更改权限时,也可能发生

因此,为了使其更加清晰,请在请求位置之前检查并记录授权状态。使用以下方法来了解定位请求是成功还是失败:

func locationManager(CLLocationManager, didUpdateLocations: [CLLocation])
func locationManager(CLLocationManager, didFailWithError: Error)

您将使用CLLocationManager.locationServicesEnabled()检查来包装对位置服务的请求。如果设备的位置信息处于关闭状态,那么请求位置信息只会导致错误。