iOS 8定位问题(转)

iOS8 定位问题

2014-10-09 09:50 1012人阅读 评论(0) 收藏 举报

转载自:  http://www.th7.cn/Program/IOS/201409/282090.shtml

在IOS8中定位功能新增了两个方法:

- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);

这两个新增的方法导致,之前写的程序在iOS8运行会出现,定位功能无法正常使用

这样让iOS8正常使用定位功能呢?

<1>你需要在info.plist表里面添加两条变量

在Info.plist中加入两个缺省没有的字段

  • NSLocationAlwaysUsageDescription
  • NSLocationWhenInUseUsageDescription

这两个字段没什么特别的意思,就是自定义提示用户授权使用地理定位功能时的提示语。

这样在写代码:

    CLLocationManager  *locationManager = [[CLLocationManager alloc]init];    locationManager.delegate = self;    [locationManager requestAlwaysAuthorization];    locationManager.desiredAccuracy = kCLLocationAccuracyBest;    locationManager.distanceFilter = kCLDistanceFilterNone;    [locationManager startUpdatingLocation];

这是在调用代理

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {    switch (status) {        case kCLAuthorizationStatusNotDetermined:            if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {                [locationManager requestWhenInUseAuthorization];            }            break;        default:            break;    }}

这样就Ok了,就会弹出原来的提示框

今天在开发的时候发现了一个iOS8的定位问题,执行操作之后,不会调用到定位之后的delegate方法中,然后找了一些资料来了解了一下ios8系统下的定位,发现确实是有所不同的:

解决方法:

1.在info.plist中添加key;

NSLocationWhenInUseDescription,允许在前台获取GPS的描述
NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述

2.在代码定位中,做版本区分和授权请求:

[objc] view plaincopyprint?

  1. if ([CLLocationManager locationServicesEnabled])
  2. {
  3. if (!self.locationManager)
  4. {
  5. self.locationManager = [[CLLocationManager alloc] init];
  6. }
  7. self.locationManager.delegate = self;
  8. self.locationManager.distanceFilter=1.0;
  9. self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
  10. if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
  11. {
  12. [self.locationManager requestAlwaysAuthorization]; // 永久授权
  13. [self.locationManager requestWhenInUseAuthorization]; //使用中授权
  14. }
  15. [self.locationManager startUpdatingLocation];//开启位置更新
  16. self.delegate = delegate;
  17. }

ok,解决了。 这个改动也看出了苹果对隐私授权开始进行层次设计,授权不再仅仅是局限于是否的2选1. 这是一件好事!

时间: 2024-11-09 10:48:22

iOS 8定位问题(转)的相关文章

web移动端一些常用知识

1.去掉 a,input 在移动端浏览器中的默认样式(半透明灰色遮罩阴影) a,button,input,optgroup,select,textarea { -webkit-tap-highlight-color:rgba(0,0,0,0); /*去掉a.input和button点击时的蓝色外边框和灰色半透明背景*/ } 2.禁止长按 a,img 标签长按出现菜单栏 a, img { -webkit-touch-callout: none; /*禁止长按链接与图片弹出菜单*/ } 3.省略号

【转】web移动端一些常用知识

1.去掉 a,input 在移动端浏览器中的默认样式(半透明灰色遮罩阴影) a,button,input,optgroup,select,textarea { -webkit-tap-highlight-color:rgba(0,0,0,0); /*去掉a.input和button点击时的蓝色外边框和灰色半透明背景*/ } 2.禁止长按 a,img 标签长按出现菜单栏 a, img { -webkit-touch-callout: none; /*禁止长按链接与图片弹出菜单*/ } 3.省略号

iOS 集成高德地图无法定位问题

1.最近的一个项目需要地图定位,.之前使用高德地图可以定位,最近的这个项目,又一次需要集成时,却无法定位.郁闷一上午.后来仔细检查,发现问题所在原因: 之前集成高德地图我是手动配置的,这一次我选择了自动配置,使用cocopods命令方式,集成的.最终发现原因是: 需在info.plist中追加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段 OK,解决无法定位问题

ios百度地图不能定位问题

在IOS8中定位功能新增了两个方法: - (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0); 这两个新增的方法导致,之前写的程序在iOS8运行会出现,定位功能无法正常使用 这样让iOS8正常使用定位功能呢? <1

iOS开发 - 解决百度地图模拟器无法定位问题

在模拟器上使用百度地图定位的时候, 经常报这样的错误: /** *定位失败后,会调用此函数 *@param error 错误号 */ - (void)didFailToLocateUserWithError:(NSError *)error { NSLog(@"%@", error); //Error Domain=kCLErrorDomain Code=0 "The operation couldn't be completed. (kCLErrorDomain error

iOS单元测试

图前内容转载自:slegetank 开始之前 本文侧重讲述如何在iOS程序的开发过程中使用单元测试.使用Xcode自带的OCUnit作为测试框架. 一.单元测试概述 单 元测试作为敏捷开发实践的组成之一,其目的是提高软件开发的效率,维持代码的健康性.其目标是证明软件能够正常运行,而不是发现bug(发现 bug这一目的与开发成本是正相关的,虽然发现bug是保证软件质量的一种手段,但是很显然这与降低软件开发成本这一目的背道而驰).它是对软件质量的一 种保证,例如重构之后我们需要保证软件产品的正常运行

ios异常(crash)输出

最近突然想起友盟的sdk附带的一个功能:将闪退异常情况上报服务器,(stackflow,github)找了一些资料,自己写了一个demo,想起来好久没有写过blog了,顺便分享. 其实不止是ios,android逻辑也是一样的,crash日志其实是系统自带的,闪退的时候,都会将crash打印,使用ide的同学可以很明显的调试看到错误的信息,定位问题. 程序打包给用户后,我们想查看程序运行情况的话,都是通过将这些crash log写入文件中(来不及上传,建立一个链接的),在下次启动的时候顺便传送服

iOS开发——错误总结&amp;异常捕捉

异常捕捉 1 有时应用崩溃,而日志中的输出信息太少,无法定位问题,这是最头疼的事情,尤其很累的时侯,已经想不起来刚才改过什么了,这就叫做无耐. 2 3 工欲善其事,必先利其器,下面的方法可以给多些信息,让你看到堆栈执行顺序,在哪里崩溃的,也就能大概给个思路,确定问题的症结. 4 5 在 AppDelegate.m 类实现之前加入: 6 7 8 9 void UncaughtExceptionHandler(NSException *exception) { 10 11 // 获取异常相关信息 1

iOS 捕获系统外异常

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 有时应用崩溃,而日志中的输出信息太少,无法定位问题,这是最头疼的事情,尤其很累的时侯,已经想不起来刚才改过什么了,这就叫做无耐. 工欲善其事,必先