我正在开发一个 iPhone 应用程序。我面临的问题是,在应用程序启动时,我必须根据用户启用或禁用位置服务来呈现两个不同的视图,但是位置服务警报会在几秒钟后出现。我该如何管理它。?流程应该是这样的
应用程序启动 -> 位置警报显示 -> 用户按下允许 -> 显示交易视图
应用程序启动 -> 位置警报显示 -> 用户不允许 -> 显示选择位置视图。
我正在开发一个 iPhone 应用程序。我面临的问题是,在应用程序启动时,我必须根据用户启用或禁用位置服务来呈现两个不同的视图,但是位置服务警报会在几秒钟后出现。我该如何管理它。?流程应该是这样的
应用程序启动 -> 位置警报显示 -> 用户按下允许 -> 显示交易视图
应用程序启动 -> 位置警报显示 -> 用户不允许 -> 显示选择位置视图。
使用 CLLocationManager 和委托来获取位置。如果失败,请检查错误代码以查看用户是否在应用程序中拒绝了位置访问:
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
UIAlertView *alert;
//denied?
if(error.code == kCLErrorDenied) alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",@"Error title header") message:NSLocalizedString(@"Turn on Location Services in Settings to use your location",@"Turn on Location Services in Settings to use your location") delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
else alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error",@"Error title header") message:NSLocalizedString(@"At the moment it is not possible to retreive your location",@"At the moment it is not possible to retreive your location") delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
在 appDelegate 中使用 CLLocationManager 来获取仅在启动时显示的位置警报可能会有所帮助。