1

我正在使用startMonitoringSignificantLocationChanges我的应用程序,我想做以下事情。

用户注册后,我会显示一个软提示,询问用户是否允许应用访问他们的位置。如果他们点击是,我会打电话给:

 if([CLLocationManager locationServicesEnabled]) {
      [locationManager startMonitoringSignificantLocationChanges];
 }

这会导致 ios 提示要求用户为应用启用位置服务。如果用户点击YES我想获取他们当前的位置,并且如果他们的当前位置靠近我的应用程序所在的城市之一,我将简单地返回应用程序。

但是,如果该城市不靠近我的应用程序所在的任何城市,我想显示一个屏幕,显示可用城市列表并要求他们选择一个。我目前正在做的是在给定页面上等待,直到locationManager:didUpdateLocations回调触发,以便我拥有当前位置。然后我会进行必要的检查,看看该城市是否靠近我的可服务城市之一。

我遇到的问题是,有时回调不会立即触发,然后用户将被卡在提示页面上而没有任何反应。这样做的正确方法是什么?

需要注意的是,我不关心确切的位置——只需要用户的大致附近。

4

1 回答 1

0
startMonitoringSignificantLocationChanges

用于跟踪位置的变化,但仅在它们四处移动时。你所描述的不一定相同。如果我打开您的应用程序并静止不动,则没有“重大的位置变化”来触发这些方法。

来自苹果文档

在返回当前位置定位后,接收器仅在检测到用户位置发生重大变化时才生成更新事件。

我会从被动的“重要”变成这个

[locationManager startUpdatingLocation];
于 2014-10-25T06:50:35.743 回答