iOS8后定位代理方法不执行解决和定位地址一直是同一个位置

iOS8后定位代理方法不执行解决

这个主要是iOS8之后苹果规定定位必须获取用户同意才可以。 如果定位时开发者不去配置相关请求信息 ,app是无法执行定位的,那怎么会执行定位代理呢。

解决方案步骤

1.在Info.plist定位时所需的配置。

// 只需要添加一个即可,string必须写明白否则会上架被拒
NSLocationAlwaysUsageDescription
请求定位时的说明
NSLocationWhenInUseUsageDescription
请求定位时的说明

2.并在设置CLLocationManager是添加请求获取用户信息的代码

// NSLocationAlwaysUsageDescription对应
[self.mgr requestAlwaysAuthorization];

// NSLocationWhenInUseUsageDescription对应
self.mgr  requestWhenInUseAuthorization];

关于 Error Domain=kCLErrorDomain Code=0 "(null)"

使用模拟器测试定位时由于模拟器不支持定位需要手动设置默认位置,具体步骤如下。

  1. 进入Edit Scheme


    iOS8后定位代理方法不执行解决和定位地址一直是同一个位置_第1张图片
    这里写图片描述
  2. 指定一个默认位置就没问题了


    iOS8后定位代理方法不执行解决和定位地址一直是同一个位置_第2张图片
    这里写图片描述

资料参考:

iOS8后定位代理方法不执行解决和定位地址一直是同一个位置_第3张图片
这里写图片描述
  1. 其他参考可能对你有所帮助(小编测试发现NO卵用,或许Xcode版本不同的缘故吧)
    1. 将上文中Default Location上方的allow Location的勾去掉
    2. 重置模拟器
    3. 再讲上述的小勾勾选
    4. 再重启模拟器

小编在做定位时发现定位位置一直是北京天安门附近

可是我在北四环呢,这定位偏差也太大了吧
这里面肯定有猫腻。。。。

小编总结了两点和大家一起分享:

1.可能是你使用模拟器配置了Default Location,这个要还原成None,具体操作步骤请看模拟器地理定位的设置。

2.你是用的测试机记过刷机了,尝试对测试机恢复出厂设置。

你可能感兴趣的:(iOS8后定位代理方法不执行解决和定位地址一直是同一个位置)