重新启用iPhone应用程序的位置服务

时间:2012-06-28 09:19:15

标签: iphone objective-c core-location cllocationmanager permission-denied

我一直在努力处理我的iPhone应用程序的位置服务请求。如果用户说“不允许”,我就会陷入“我的应用程序需要位置服务以便工作”...

所有重新申请位置服务的尝试都没有结果,这里有几个堆栈可以证明。

然后我读到,重新启用位置服务的唯一方法是使用以下方法将用户重定向到位置服务设置:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]; 

但即使这似乎也不起作用(iPhone 4和4S,均为5.1)

除了告诉用户去偏好然后指导他之外,真的没有别的办法吗?对我来说,这似乎很笨拙。

1 个答案:

答案 0 :(得分:2)

如果用户关闭了位置服务,则没有其他方法可以告诉用户再次打开它们。

您可以尝试重定向,但这仅适用于iOS 5.0。所以你可以这样做:

NSURL *prefsURL = [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"];

if ([[UIApplication sharedApplication] canOpenURL:prefsURL]) {
   [[UIApplication sharedApplication] openURL:prefsURL];
} else {
  // Can't redirect user to settings, display alert view
  UIAlertView *alertView = ....

}