地图定位IOS8之后的定位

从ios8开始,苹果进一步加强了对用户隐私的保护。

  当app想要访问用户的隐私信息时  系统不再自动弹出一个对话框让用户授权

解决方法:

(1)调用ios8.0的API 主动请求用户授权

- (void)requestAlwaysAuthorization //请求允许在前后台都能获取用户位置的特权

- (void)requestWhenInUseAuthorization //请求允许在前台获取用户位置的特权

那么现在我们开始使用着两个方法:

我们本此奖的项目 使我们上一次ios8之前的定位那个项目 我们只需要做稍微的改动即可:

1.首先将我们的部署版本切换到8.4

2.然后再我们的ViewController.m文件 的懒加载位置管理者中加上以下代码:

3.将模拟器切换到6

4.允许程序

我们点击屏幕 你会发现 什么都没做 没有弹出哪个框

那这个是什么原因呢?

我们进入这个方法的头文件看看

看到这句话了吗?

这句话的意思是说如果你的info.plist文件中没有这样的key: NSLocationWhenInUseUsageDescription 那么这个方法什么也不会做

所以现在我们在info.plist文件中配置这样的key

配置好之后 我们再次允许程序看看

现在就可以了 我们点击allow

然后点击屏幕 ,你会发现控制台没有打印任何信息,这个问题是模拟器的问题 我们只需要将模拟器重启一下就可以了

重启模拟器方法如:

然后我们重新运行程序 你就会发现 可以了:

注意这个:requestWhenInUseAuthorization  方法默认情况下 波可以在后台获取位置 需要勾选后台模式

这个时候我们允许程序 将程序退到后台 看看效果

看到区别了吗? 会出现一个蓝色的条

以上是使用requestWhenInUseAuthorization  进行定位授权  接下来我们看看requestAlwaysAuthorization前后台授权

他跟requestWhenInUseAuthorization 的区别就是 不需要勾选后台模式 并且不会出现蓝色的条

同时他也需要在info.plist文件中配置如下的key :

我们配置下

我们简单修改下代码 将前后台授权打开:

然后我们运行程序:

发现退到后台依然可以定位

最后要提醒的就是以上两个方法 都是ios8.0的方法  所以如果你是运行在8.0之下的话会报方法找不到的错误,所以如果你要做适配的话

需要判断系统当前的版本号

到此位置 我们ios8.0之后的 就讲这么多了

时间: 2024-10-02 07:03:33

地图定位IOS8之后的定位的相关文章

IOS地图定位——IOS8(待更新)

在iOS开发中,使用定位,必须基于2个框架进行开发 (1)Map Kit :用于地图展示 (2)Core Location :用于地理定位 两个热门专业术语 (1)LBS :Location Based Service(基于定位的服务)百度,(高德是定位与导行比较出色) (2)SoLoMo :Social Local Mobile(索罗门)基于位置进行社交 CoreLocation框架的使用 1. 使用前提: 1>导入框架: 2>导入主头文件 #import <CoreLocation/

iOS开发系列--地图与定位-ios8

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iO

地图定位IOS8.0之前的定位

在ios8.0之前定位的步骤如下: 1.首先将我们的项目版本切换到7.0 2.在ViewController.m文件中导入头文件 #import <CoreLocation/CoreLocation.h> 3.创建位置管理者 使用懒加载的方式 并设置代理,遵守协议 因为位置管理者对象不是单例 所以为了保证不让它一创建出来就销毁 所以我们需要定义为成员属性 4.实现一个小功能  当用户点击控制器的view的时候 我们开始定位用户的位置 所以在ViewController.m中实现以下方法 5.当

xcode6打开以前工程在Ios8系统无法定位解决方案

xcode6打开以前xcode5工程,发现程序不能定位,包括iOS8模拟器,真机都不能定位?代码经检查没有问题,后来查找苹果Ios8升级差异策略,发现Ios8对定位处理做了一些调整,工程升级到xcode6编译时需要iOS8 要自己写授权,不然没权限定位.修改点如下:       1: 在Info.plist中加入两个缺省没有的字段 ,值均设置为YES        NSLocationAlwaysUsageDescription       NSLocationWhenInUseUsageDes

(百度地图API)v4-2版本定位功能

这几天在看郭霖老师的大作,在百度地图这一张卡的好久,原因是因为百度更新迭代的速度太快了,导致老师的书上的版本已经淘汰又淘汰了,不过还是给了我很多的启发的啊.今晚自己就实现了一下百度地图的定位功能. 百度地图API的什么的,也就不多说了.官网上介绍的也比较详细,还都是中文的,仔细阅读下就行,对了,我用的是v4-2的版本.感觉只有晚上11点以后的工作效率才会翻倍啊,大家有没有这个体会啊,最近想做一款跑步的软件,当然是很简单的那种,做完了会贴上代码和大家来讨论的. 官网链接:http://develo

百度地图之地址解析和浏览器定位以及添加可拖拽标注

这里的百度地图demo包括了常见的:地址解析.浏览器定位.IP定位.可拖拽标注 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> <script type="tex

如何利用【百度地图API】进行定位?非GPS定位

原文:如何利用[百度地图API]进行定位?非GPS定位 如果你可以上网,如果你有火狐浏览器,那么恭喜你.你能很容易使用以下代码进行定位! ------------------------------------------------------------------------------- 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用程序. 其中,有Geolocation这个类,可以帮助你进行定位. 它的原理是,利用

iOS8以前与iOS8使用CoreLocation定位

iOS8以前使用CoreLocation定位1.首先定义一个全局的变量用来记录CLLocationManager对象,引入CoreLocation.framework使用#import <CoreLocation/CoreLocation.h>1 @property (nonatomic, strong) CLLocationManager *locationManager; 2.初始化CLLocationManager并开始定位 -(CLLocationManager *)locationM

iOS8 程序 系统设置-定位服务-崩溃问题

关于iOS8的定位问题这里我就不详细说了,只针对我遇到的问题来说明一下,不过也不用担心,我会为你推荐一篇文章. iOS8 系统定位问题:传送门 好了,下面开始说我遇到的问题, 经过一番调试,iOS8已经可以定位成功,但是我遇到了一个比较奇怪的问题. 在系统设置-->隐私-->定位服务中,点击其中自己的程序进行设置,然后系统设置就会直接崩溃. 然后我就参照上一篇文章进行对比,最后发现了一个可疑的地方. 正常情况下在 项目info.plist中 添加的两个字段是string类型的. 但是我设置的却