5

我一直在为我的iPhone应用程序的位置服务请求而苦苦挣扎。如果用户说“不允许”,我就被困在我的“这个应用程序需要位置服务才能工作”...重新启用iPhone应用程序的位置服务

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

然后,我读了重新启用位置服务的唯一办法就是使用这种将用户重定向到位置服务设置:

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

但即使这样,似乎没有工作(iPhone 4和4S,都在5.1)

除了告诉用户去偏好,然后引导他通过,是否真的没有其他的方式?对我来说,这看起来太像笨重了。

+0

使用重定向到首选项:已在iOS 5.1中删除。但是苹果公​​司从未正式支持过它,所以它无论如何都有点破绽。 –

+0

是的,我也读过http://www.alexcurylo.com/blog/2011/11/04/settings-urls/ ...但我不能相信他们留下了这样一个空洞的死胡同在流量... –

回答

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

} 
+0

@Nils Munch增加的博客文章(http://www.alexcurylo.com/blog/2011/11/04/settings-urls/)表示,人们因使用此功能而拒绝应用程序,所以我不会推荐它.. –

+1

的确,我必须在商店中使用上述应用程序。但是如果更新包含此更新,它可能会被拒绝。 – rckoenes

+0

悲伤但真实... –

相关问题