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

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


iOS7:

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

iOS8:

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

1.在AppDelegate中或者其它设置CLLocationManager的控制器中:

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

实现中添加如下代码
   [UIApplicationsharedApplication].idleTimerDisabled = TRUE;
   self.locationManager = [[CLLocationManager alloc]init];
   self.locationManager.delegate = self;
   self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
   if(IS_IOS8){
[   self.locationManager requestAlwaysAuthorization];
   //NSLocationAlwaysUsageDescription
    [self.locationManager requestWhenInUseAuthorization];
   //NSLocationWhenInUseUsageDescription
}
    [self.locationManager startUpdatingLocation];

或者这样:

 

if([CLLocationManager locationServicesEnabled])

{

    self.locationManage = [[[CLLocationManager alloc] init] autorelease];

    self.locationManage.delegate = self;

    ;

    self.locationManage.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

    //kCLLocationAccuracyBest;

    if (SYSTEM_VERSION >= 8.0) {

        //使用期间

        [self.locationManage requestWhenInUseAuthorization];

        //始终

        //or

        [self.locationManage requestAlwaysAuthorization]

    }

}

另外也提供下新增下面的代理方法:

 

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status

{

    switch (status) {

        case kCLAuthorizationStatusNotDetermined:

            if ([self.locationManage respondsToSelector:@selector(requestAlwaysAuthorization)])

            {

                [self.locationManage requestWhenInUseAuthorization];

            }

            break;

        default:

            break;

    }

    

}

详情见https://app.yinxiang.com/l/ABarZZCJ2_dAd7B0ncWryoyV2bZ06fI1_WM

 

在AppDelegate是这样设置的:

 

@interface AppDelegate()<CLLocationManagerDelegate>

{

    UINavigationController *_navController;

    CLLocationManager      *_locationmanager;

}

 

@end

 

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    [UIApplicationsharedApplication].idleTimerDisabled = TRUE;

    

    _locationmanager = [[CLLocationManager alloc] init];

    [_locationmanager requestAlwaysAuthorization];        //NSLocationAlwaysUsageDescription

    [_locationmanager requestWhenInUseAuthorization];     //NSLocationWhenInUseUsageDescription

    _locationmanager.delegate = self;

//....

}

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

2.并需要plist文件中进行设置:
设置方法:
 在 info.plist里加入:
    NSLocationWhenInUseUsageDescription,允许在前台获取GPS的描述
    (网上广为流传的NSLocationWhenInUseDescription,是不正确的,亲测不可行.请参照官方文档,链接已在文章结尾处给出.)
    NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述
  如下图:

具体的文字提示,可以参照微信
你将得到这样的效果:
 
 
 
 
也可以这样设置:
 
你将得到这样的效果:
 
 
‘友情提示:如果你的应用开启了在后台运行GPS,必须在App的iTunes介绍里,加一句"Continued use of GPS running in the background can dramatically decrease battery life.”,否则苹果会把你的App拒掉….亲测是的….

Reasons:

  • 2.16: Multitasking Apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc. 

Hello,

We found the following rejection while reviewing your app. Please see more details below.

We found that your app uses a background mode but does not include the following battery use disclaimer in your Application Description:

"Continued use of GPS running in the background can dramatically decrease battery life."

It would be appropriate to revise your Application Description to include this disclaimer.

If your iTunes Connect Application State is Metadata Rejected, we do NOT require a new binary. 

To revise the metadata:

- Log in to iTunes Connect
- Click on “My Apps”
- Select your app
- Revise the desired metadata values 
- Click “Save" 
- Once you’ve completed all changes, click the “Submit for Review” button at the top of the App Details page

Kind Regards,

The App Review Team

 
 
 
你模仿高德地图等应用,这样写:
【温馨提示】
本App的主要服务会持续使用GPS定位服务,切换至后时,仍会继续,相比其他操作会消耗更多的电量,并影响电池续航时间。
使用位置共享过程中,您可以随时退出,中止位置共享。本App不会将您的真实位置暴漏或提供给第三方。
Continued use of GPS running in the background can dramatically decrease battery life.
添加以上内容之后即可以进行定位服务,下面的一些问题#解决方案#也是如此:
  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,转载请注明出处。

 

扩展阅读:
  1. iOS8 定位新增功能(http://blog.csdn.net/yongyinmg/article/details/39521523)
  2.  
 
 
另外这是iOS8申请push权限也变了,其api也变了
 
请注意,在此不做赘述.
 
 
本文永久地址为 http://www.cnblogs.com/ChenYilong/p/4020359.html,转载请注明出处。

https://developer.apple.com/library/IOs/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

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

  1. 系列文章:老项目的#iPhone6与iPhone6Plus适配#(持续更新中,更新日期2014年10月12日 星期日 )

    本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020399.html ,转载请注明出处. ********************************** ...

  2. 老项目的#iPhone6与iPhone6Plus适配#LaunchImage适配

    本文永久地址为 http://www.cnblogs.com/ChenYilong/p/4020384.html,转载请注明出处.  Evernote印象笔记链接:https://www.everno ...

  3. 老项目的#iPhone6与iPhone6Plus适配#Icon适配

        本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020373.html ,转载请注明出处.  这是Evernote印象笔记的链接:https://www ...

  4. 老项目的#iPhone6于iPhone6Plus适配#iPhone6分辨率与适配

    技术博客http://www.cnblogs.com/ChenYilong/    本文永久地址为http://www.cnblogs.com/ChenYilong/p/4011744.html ,转 ...

  5. #iPhone6与iPhone6Plus适配#如何在Xcode 6中创建 PCH 文件

    本文永久链接http://www.cnblogs.com/ChenYilong/p/4008086.html   新建文件 ⌘+N选择 iOS/Mac -> Other -> PCH Fi ...

  6. iOS开发之#iPhone6与iPhone6Plus适配#Xcode6.0/Xcode6.1上传应用过程中一些变动以及#解决方案#

    更新时间2014年11月13日  本博文创建时,只有Xcode6.0, Xcode6.0尝试多次,确实如此 之后在6.1版本经博主少量尝试,确实也有如下问题,现更新下博客! iOS8发布之后,苹果强制 ...

  7. 【实战】记一次老项目的swagger整合

    1.背景 这两天接到一个整合swagger的任务,本以为很简单,预计两小时内完成,没想到其中有太多的坑,整了两天才完成. 首先项目是一个比较老的项目,之前用的servlet,目前在重构为springm ...

  8. 搜刮一些开源项目的APP

    iOS完整App资源收集 <iOS完整app资源收集>  <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...

  9. 谈谈软件项目的dependency

    说到软件项目的依赖管理,可以从三个方面来考虑: 一.由build system控制的dependency 现在的build system,都支持一定程度上的dependency management, ...

随机推荐

  1. UIButton利用分类扩展方法(封装)

    UIButton+BackgroundColor.h #import <UIKit/UIKit.h> @interface UIButton (BackgroundColor) - (vo ...

  2. Opencv step by step - 配置文件

    有时候,我们需要用配置文件存储一些图像或者视频的信息. 先来一个简单的例子: #include <cv.h> #include <highgui.h> int main(int ...

  3. 云计算之路-阿里云上:遭遇CDN问题

    7月10日11:14接到一位用户反馈,访问园子时加载不了 common.cnblogs.com/script/jquery.js 这个文件. 由于这个域名用了阿里云CDN,所以我们判断可能是某个CDN ...

  4. 【逆向怎么玩】 动态调试一款牛逼C++ IDE实录

    声明 本篇只从逆向兴趣出发,研究其程序运行原理. CLion程序版权为jetBrains所有. 注册码授权为jetBrains及其付费用户所有. 不会释出任何完整的源代码. 涉及能直接推算出注册码的地 ...

  5. 编译到底做了什么(***.c -> ***.o的过程)

     (第一次写博客,好激动的说.......)   我们知道,一个程序由源代码到可执行文件往往由这几步构成: 预处理(Prepressing)-> 编译(Compilation)-> 汇编( ...

  6. SSRS用自定义对象绑定报表

    有一个报表的数据源是一个对象的List, 这个对象List中还有层级,其中还有其他的对象List,这样的层级有三层.其数据是从数据库中取出来的.其LINQ的操作太多了而且复杂,所以不太可 能从LINQ ...

  7. 完美实现开机启动虚拟WIFI,顺便实现目前的WP8系统使用VPN(7.1修)

    众所周知,windows7系统的机器若带有无线网卡(台式机可以买一个USB无线网卡,京东目前39元,TP-Link的),可以虚拟出wifi,供手机等移动设备使用. 虚拟的WIFI的命了和软件在网上都找 ...

  8. 结对子作业 四则运算 V2.0

    import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import ja ...

  9. 【项目开发】LigerUI+MVC的应用

    1.RazorJS 2.@Html.Raw     表示不对输出进行转义

  10. PowerDesigner-导出表到word

    1. 在工具栏中选择[Report -->Reports],如下图 2. 点击第二个图标创建一个Report,如下图 该wizard中有三个信息 Report name Report : Rep ...