5

我一直在为我的 iPhone 应用程序的定位服务请求而苦苦挣扎。如果用户说“不允许”,我就会陷入“这个应用程序需要定位服务才能工作”的状态......

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

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

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

但即使这样似乎也不起作用(iPhone 4 和 4S,都在 5.1 上)

除了告诉用户去偏好然后引导他通过之外,真的没有其他方法吗?对我来说,它看起来如此笨重。

4

1 回答 1

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 = ....

}
于 2012-06-28T09:31:03.067 回答