我几天前问this question我的应用没有出现在设置>下重新安装后的位置服务。我发现重新安装后,我必须运行应用程序并等待“使用当前位置”授权警报视图显示,以便应用程序显示在“位置服务”列表下。反过来,我发现应用程序启动时我的应用程序不会立即显示此警报视图。
以下是可能存在问题的一些代码:
-(void)restartGps: (UIWebvView *)curWebView {
[locationManager startMonitoringSignificantLocationChanges];
[self performSelector:@selector(noGpsLock:) withObject:curWebView afterDelay:GPS_TIMEOUT];
}
-(void)noGpsLock: (UIWebView *)curWebView {
if (!hasLocationFix) {
[locationManager stopMonitoringSignificantLocationChanges];
[self performSelector:@selector(restartGps:) withObject:curWebView afterDelay:GPS_TIMEOUT];
}
}
当调用-locationManager:didUpdateToLocation:fromLocation:
时,hasLocationFix设置为TRUE。
我最初在restartGps:
中调用viewDidLoad
并让这两种方法从此开始互相调用。我发现第一次调用restartGps:
(来自viewDidLoad
)时,警报未显示,因此应用无法获取任何位置。在noGpsLock:
和restartGps
来电之后,警报终于出现,应用程序可以获取位置。
为什么第一次调用restartGps:
时警报没有显示?