`
啸笑天
  • 浏览: 3465570 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

iOS9新特性_更灵活的后台定位

 
阅读更多

感谢:https://github.com/ChenYilong/iOS9AdaptationTips#1-demo1_ios9%E7%BD%91%E7%BB%9C%E9%80%82%E9%85%8D_ats%E6%94%B9%E7%94%A8%E6%9B%B4%E5%AE%89%E5%85%A8%E7%9A%84https 

iOS9新特性_更灵活的后台定位

【iOS9在定位的问题上,有一个坏消息一个好消息】坏消息:如果不适配iOS9,就不能偷偷在后台定位(不带蓝条,见图)!好消息:将允许出现这种场景:同一App中的多个location manager:一些只能在前台定位,另一些可在后台定位,并可随时开启或者关闭特定location manager的后台定位。

如果没有请求后台定位的权限,也是可以在后台定位的,不过会带蓝条:

 

如何偷偷在后台定位:请求后台定位权限:

 // 1. 实例化定位管理器
_locationManager = [[CLLocationManager alloc] init];
// 2. 设置代理
_locationManager.delegate = self;
// 3. 定位精度
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
// 4.请求用户权限:分为:⓵只在前台开启定位⓶在后台也可定位,
//注意:建议只请求⓵和⓶中的一个,如果两个权限都需要,只请求⓶即可,
//⓵⓶这样的顺序,将导致bug:第一次启动程序后,系统将只请求⓵的权限,⓶的权限系统不会请求,只会在下一次启动应用时请求⓶
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
    //[_locationManager requestWhenInUseAuthorization];//⓵只在前台开启定位
    [_locationManager requestAlwaysAuthorization];//⓶在后台也可定位
}
// 5.iOS9新特性:将允许出现这种场景:同一app中多个location manager:一些只能在前台定位,另一些可在后台定位(并可随时禁止其后台定位)。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
    _locationManager.allowsBackgroundLocationUpdates = YES;
}
// 6. 更新用户位置
[_locationManager startUpdatingLocation];

但是如果照着这种方式尝试,而没有配置Info.plist,100%你的程序会崩溃掉,并报错:

*** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-1808.1.5/Framework/CoreLocation/CLLocationManager.m:593

要将 Info.plist 配置如下:enter image description here

对应的 Info.plist 的XML源码是:

<key>NSLocationAlwaysUsageDescription</key>
<string>微博@iOS程序犭袁 请求后台定位权限</string>

<key>UIBackgroundModes</key>
<array>
    <string>location</string>
</array>


  • 大小: 1.2 MB
分享到:
评论

相关推荐

    iOS7_Programming_Cookbook源代码

    9. **动画与视觉效果**:iOS 7引入了更丰富的动画效果,源代码可能包含如何使用CAAnimation进行视图动画,以及如何实现视图控制器间的平滑过渡。 10. **测试与性能优化**:书中可能包含单元测试和集成测试的实践,...

    IOS7新特性大集合Demo

    在iOS 7中,苹果对用户界面和操作系统进行了大规模的更新,引入了许多新的特性和功能,使得开发者可以创建更加丰富、交互性更强的应用程序。这个名为"IOS7新特性大集合Demo"的压缩包文件正是为了展示这些变化而设计...

    ios 4 新特性 多任务

    通过深入理解iOS 4的多任务特性,开发者可以构建出更高效、更符合用户需求的应用程序。同时,了解并利用好相关工具和API,是优化应用的关键。在实际开发中,应充分测试和调试,确保应用在各种状态下都能稳定运行。

    新版原生无报毒通讯录APP_新版后台_完美运行.zip

    1. **原生应用(Native App)**:原生应用是指直接针对特定操作系统(如iOS或Android)进行开发的应用程序,它们能充分利用设备的硬件特性,提供最佳性能和用户体验。 2. **无病毒(No Virus)**:表明开发者在设计...

    iOS_6_by_Tutorials

    8. **多任务处理**:iOS 6改进了多任务处理,使得应用可以在后台执行特定任务,如音频播放、定位服务和后台下载。书中会介绍如何实现这些功能。 9. **UIWebView**:学习如何使用UIWebView加载和交互网页内容,以及...

    iOS组件与框架 iOS SDK高级特性剖析

    在iOS开发领域,掌握组件与框架以及SDK的高级特性是至关重要的。本资源"iOS组件与框架 iOS SDK高级特性剖析"深入探讨了这些关键知识点,旨在帮助开发者提升应用的用户体验和性能。 首先,iOS组件是构成应用程序的...

    ios后台运行

    在iOS平台上,应用程序的后台运行是一项关键特性,它允许用户在切换到其他应用或设备进入休眠状态时,某些特定任务仍然可以继续执行。标题"ios后台运行"和描述"ios后台长时间运行,退出后播放一个音频文件"揭示了...

    location驱动ios12.4 ios12.3 ios12.2 ios12.1 ios12.0 ios11.0 ios11.4

    例如,iOS 12增强了后台定位的透明度,用户可以看到哪些应用在后台使用位置信息,并可以一键禁用。此外,系统还提供了智能提示,当应用频繁请求位置信息时,会提醒用户。 5. 隐私保护:苹果一直非常重视用户隐私,...

    ios app 后台运行备份

    在iOS平台上,应用程序的后台运行是一项关键特性,它允许用户在退出应用后继续执行特定任务。iOS系统对后台运行有着严格的限制,以确保设备的性能和电池寿命。本篇文章将深入探讨iOS应用如何在后台执行任务,特别是...

    iOS9应用开发基础教程

    #### 一、iOS9系统简介及新特性 - **Siri语音助手智能化**:iOS9中的Siri变得更加智能,能够理解上下文并根据用户的行为习惯提供更加个性化的服务。 - **新增News新闻聚合应用**:苹果在iOS9中推出了自己的新闻聚合...

    苹果开发者大会WWDC2021&iOS9发布会图文直播.docx

    - **版本定位**:iOS9被视为iOS8的优化版,而非革命性的升级。这意味着它更注重于改进现有功能和增强稳定性。 - **用户体验优化**: - 提升了整体操作流畅性和响应速度。 - 改进了电池续航表现,通过优化后台应用...

    iOS 后台运行的方法

    在iOS平台上,应用程序的后台运行是一项关键特性,它允许应用在用户离开应用或者设备进入待机状态时继续执行特定任务。然而,与Android系统不同,iOS对于后台运行有着严格的限制和管理,以优化电池寿命和整体用户...

    ios-定位.zip

    在`LocationManager`类中,我们通常会有一个初始化方法,用于设置定位服务的相关参数,比如定位精度、是否允许后台定位等。此外,还会有一个开启定位服务的方法,启动`CLLocationManager`并请求用户的授权。在iOS中...

    IOS官方开发手册

    此外,iOS支持多种后台模式,如后台音频、后台定位和后台刷新等,开发者需了解何时及如何使用这些模式。 网络编程是iOS应用的重要组成部分。手册会涵盖HTTP请求、URLSession、JSON解析等内容,以及如何处理网络错误...

    iOS_Simulator_Guide.pdf

    ### iOS模拟器指南知识点概述 #### 一、关于iOS模拟器 - **定义与功能**:iOS模拟器是苹果提供的一款工具,允许开发者在Mac上模拟iPhone或iPad环境,进行应用开发与测试工作。 - **版本与兼容性**:本指南针对iOS...

    疯狂iOS 最新代码大全

    Objective-C是早期iOS开发的首选语言,而Swift则是在2014年苹果开发者大会上发布的新一代编程语言,以其简洁、安全的特性迅速获得了开发者们的青睐。这份代码大全可能包含了这两种语言的相关代码示例,让你能够同时...

    IOS应用源码之后台运行(Multitasking)以及本地通知(Local Notifications)Demo .zip

    在iOS开发中,后台运行(Multitasking)和本地通知(Local Notifications)是两个非常重要的概念,它们极大地提升了用户体验和应用的功能性。本Demo旨在帮助开发者深入理解和实践这两个特性。 一、后台运行...

    iOS+9应用开发基础教程.pd

    iOS9引入了多项新特性和功能,极大提升了用户体验和开发者的开发效率。本书名为《iOS+9应用开发基础教程》,是一本专注于Swift2.0语言的iOS9应用开发教程书籍。 ### iOS9系统特性介绍 iOS9的主要特性包括: - **...

    iOS 6 编程实战

    此外,iOS 6的多任务处理功能也有所增强,比如后台模式,使得应用程序在后台也能执行特定任务,如音频播放或定位服务。开发者需要学习如何合理利用这些特性,以提供更流畅的用户体验。 总之,《iOS 6编程实战》是一...

    ios7高级编程iOS7 Programming Cookbook

    3. **多任务处理**:iOS 7支持后台模式,如后台应用程序刷新、后台音频播放和定位服务等。开发者将了解如何利用这些功能,使应用即使在后台也能保持活跃,提供持续的服务。 4. **UI Dynamics**:iOS 7引入了物理...

Global site tag (gtag.js) - Google Analytics