2012-05-14 31 views
0

我对这项技术非常陌生,所以请帮助我。CLLocationManager - iPhone应用程序中的自定义位置管理器

我使用CLLocationManager获取当前位置和我的应用程序具有显示状态,他已经允许当前位置或不即信息提示,当我们写

[self.locationManager startUpdatingLocation]; 

其配备的缺省如果用户点击自定义设置不允许该消息提示并返回到我的应用程序自定义设置并关闭按钮以获取位置,我可以获取用户的当前位置。

如何实现这个东西,请大家帮忙。

在此先感谢

回答

15

一旦位置服务已经用户拒绝为您的应用程序它只能在常规设置重新开启 - 所以告诉用户,然后将它们发送到那里。 (您可能需要使用一个UIAlertView中先通知他们。)

// If Location Services are disabled, restricted or denied. 
if ((![CLLocationManager locationServicesEnabled]) 
    || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted) 
    || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)) 
{ 
    // Send the user to the location settings preferences 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"prefs:root=LOCATION_SERVICES"]]; 
} 
+0

非常感谢,你解决了我的问题.... :) –

+3

不幸的是,使用'prefs:root = LOCATION_SERVICES' URL不再适用于iOS 5.1:[http://www.alexcurylo.com/blog/2011/11/04 /设置的URL /] –

0

您的问题的简短答案是“是”。当用户通过设置为您的应用启用位置服务时,它就好像用户在提示时回答“是”。您可以检查是否位置服务是通过代码检查授权状态为您的应用程序启用,正是如此:

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) 
{ 
    //Get user's current location 


} 
+0

谢谢您的回答,我的问题是,当用户说,没有最初用于获取位置,然后希望得到的当前位置,这样他就可以改变我的应用程序定制设置 –

+0

为什么在设备设置中免费获取位置服务时需要进行自定义设置?无论如何,系统需要通知用户改变了他或她的想法。您认为如果只有您的应用程序知道它,系统才能保证用户确实改变了主意?应该很明显,系统需要提供接口以保证用户的答案是正确的;系统通知每个应用程序。因此,如果用户第一次选择不授权您的应用,请将您的用户引导至设置菜单以更改您的应用的选择。 – Sunny

相关问题