码迷,mamicode.com
首页 > 移动开发 > 详细

老项目的#iPhone6与iPhone6Plus适配#iOS8无法开启定位问题和#解决方案#

时间:2014-10-12 14:12:08      阅读:556      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   os   ar   strong   

本文永久地址为 http://www.cnblogs.com/ChenYilong/p/4020359.html,转载请注明出处。
iOS8的定位和推送的访问都发生了变化,

下面是iOS7和iOS8申请定位权限时的不同:


iOS7:

?
bubuko.com,布布扣
本文永久地址为?http://www.cnblogs.com/ChenYilong/p/4020359.html,转载请注明出处。
?

iOS8:

?
bubuko.com,布布扣
本文永久地址为?http://www.cnblogs.com/ChenYilong/p/4020359.html,转载请注明出处。
我们知道苹果在iOS8上对定位进行了大幅度优化,可以支持室内定位,常去地点统计,楼层等。但是在iOS8上currentLocation是空的,导致定位失败了。
高德也定位失败(原因可能是未对iOS8做适配),或者不会调用到定位之后的delegate方法中,然后我查看了一下手机上对应用的定位权限界面,发现我的应用的访问用户的地理位置的权限是空的,之后查了相关信息,得到以下解决方案:
1.在AppDelegate中或者其它设置CLLocationManager的控制器中


声明
@property(nonatomic,strong)CLLocationManager*locationManager;

实现中添加如下代码
[UIApplicationsharedApplication].idleTimerDisabled=TRUE;
???
self.locationManager= [[CLLocationManageralloc]init];
???
self.locationManager.delegate=self;
???self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;
???if(IS_IOS8){

[???self.locationManagerrequestAlwaysAuthorization];
???//NSLocationAlwaysUsageDescription
??? [
self.locationManagerrequestWhenInUseAuthorization];
???//NSLocationWhenInUseDescription
}
??? [self.locationManagerstartUpdatingLocation];

AppDelegate是这样设置的:
@interface AppDelegate()<CLLocationManagerDelegate>
{
??? UINavigationController *_navController;
??? CLLocationManager????? *_locationmanager;
}
?
@end
?
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
??? [UIApplication sharedApplication].idleTimerDisabled = TRUE;
???
??? _locationmanager = [[CLLocationManager alloc] init];
??? [_locationmanager requestAlwaysAuthorization];??????? //NSLocationAlwaysUsageDescription
??? [_locationmanager requestWhenInUseAuthorization];???? //NSLocationWhenInUseDescription
??? _locationmanager.delegate = self;
}
本文永久地址为?http://www.cnblogs.com/ChenYilong/p/4020359.html,转载请注明出处。


2.需要plist文件中进行设置:
设置方法:
?在 info.plist里加入:
??? NSLocationWhenInUseDescription,允许在前台获取GPS的描述
??? NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述
? 如下图:

bubuko.com,布布扣?
添加以上内容之后即可以进行定位服务,下面的一些问题#解决方案#也是如此:
  1. iOS8 高德地图SDK MAMapView无法定位的问题(http://blog.csdn.net/johnzhjfly/article/details/39497751)
  2. iOS8 百度地图SDK MAMapView无法定位的问题
  3. iOS8 Location not?accessible
  4. iOS8 MKMapView 代理无效问题
  5. Access the user‘s location on Today Extension?
  1. iOS8无法开启定位问题
本文永久地址为?http://www.cnblogs.com/ChenYilong/p/4020359.html,转载请注明出处。
?
另外这是iOS8申请push权限也变了,其api也变了
?
bubuko.com,布布扣
请注意,在此不做赘述.
?
?
本文永久地址为?http://www.cnblogs.com/ChenYilong/p/4020359.html,转载请注明出处。

老项目的#iPhone6与iPhone6Plus适配#iOS8无法开启定位问题和#解决方案#

标签:des   style   blog   http   color   io   os   ar   strong   

原文地址:http://www.cnblogs.com/ChenYilong/p/4020359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!