您的位置:首页 > 移动开发 > IOS开发

iOS使用百度地图定位,关掉系统定位服务该怎么提示用户打开

2016-03-24 15:07 691 查看
首先关于这个问题,我真的纠结了很久很久,因为我们的项目请求一些数据的时候需要给后台上传用户的经纬度,然而用户小白并不知道,所以本妹子就是说如果用户关掉了定位服务或者是没有允许我们的项目使用定位服务这个时候就要给他一个弹框,

第一步我先在网上学习了怎么判断定位服务开启了没有代码如下

:#pragma mark -检验定位服务是否开启

-(void)judgeLocationServiceEnabled

{

if ([CLLocationManager locationServicesEnabled])
{
//system location enabled
if (`[CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse||[CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedAlways`)
{
//允许PGS访问定位
[_locationService startUserLocationService];
}
else
{
//定位服务开启  --但是用户没有允许他定位
PGLog(@"跳转到PGS页面允许定位")
UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"请去系统定位服务,允许PGS获取您的位置" message:@"PGS需要根据您的位置获取店铺列表" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"去设置", nil];
alertView.delegate=self;
alertView.tag=0;
[alertView show];
}

}
else
{
PGLog(@"跳转隐私定位")
UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"请去系统定位服务,允许PGS获取您的位置" message:@"打开定位服务" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"去设置", nil];
alertView.delegate=self;
alertView.tag=0;
[alertView show];
}


}

[CLLocationManager locationServicesEnabled]


这句话的意思就是说隐私–定位服务有没有打开

[CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse||[CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedAlways


这句话的意思是在用户第一次下载程序的时候,打开之后弹出的授权询问框他是选择了始终信任和使用之间,

点击去设置的时候要跳转到系统的设置页面代码如下–

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


根据我的经验这段代码在i6plus运行的时候会跳转不了,所以要在info–url Scheme里面添加一个urlTypes —prefs

如图:



然而我发现百度地图定位那个类,在我把定位服务关了之后他会自己默认给我弹出让我去设置系统的定位服务,然而他只是在用户第一次运行的时候才会弹出,其他时候不会弹出,然而我希望我们所有的用到的地方他都会提示,但是他真做不到这样,知道现在我也不知道到底怎样做是最正确的选择,我让我们同事在写操作手册的时候给加上了要开启定位服务,我也通过各种途径联系到了百度工程师,不过到现在他还没有回复我,我也会继续跟踪这个问题,如果大家有好的方法,麻烦告诉我一下,感激不尽,

QQ:1030415247
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: