最近在项目上遇到一个需求,就是需要获取到当前的网络和地理位置,这样能够使用户的当前位置更加准确,省下更多的数据流量。其实这个需求并不是很难,主要是理清思路,一开始我做的时候就因为没理好逻辑就做,后来出了一个小bug,我索性就重新做了一遍,完美的解决了需求。
首先逻辑可以分成两种 1.先判断网络,再来判断位置,但是这样有个弊端,比如你做的是一个办公的打卡软件,这个时候你先判断网络其实意义并不大,首先还是得看定位服务开没开,再来判断网络状态,以提高精确度。
2,先判断定位服务,再来判断网络,这样的话,不管你怎样做都是没有问题的。
下面就是一些代码和需要添加的东西。
A.你首先得在targets里边的info中有一个 URL Types,在这里边你得闲添加一个东西,然后在添加的这个东西里边的URL Schemes 中填上 prefs,好,到这,在项目里边需要配置的东西就算完成了。
B.那就是代码了
首先判断定位服务是否开启
//定位功能可用的时候
if ((([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse)) || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)) {
//再来判断网络
//有wifi的时候
if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus==ReachableViaWiFi) {
NSLog(@"有wifi");
}
// 没有使用wifi, 使用手机自带网络进行上网
else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus==ReachableViaWWAN) {
NSLog(@"使用手机自带网络进行上网");
alert = [[UIAlertVie