iOS后台定位实现

iOS应用后台运行GPS定位功能的实现 最近终于回归iOS了,一会来就碰到了定位相关的功能要求,客户要求即使应用挂起也可以执行GPS定位,并在位置发生变化时根据你的需要唤醒应用。 稍微研究了一下,实现方式跟音频后台播放类似,在应用的plist里添加后台运行设定即可。 Apple官方说明原文: An app that provides continuous location updates to the user (even w 阅读详情
工作中碰到一个定位的应用场景:app需要在后台运行,实时上传用户地理位置。

苹果对iOS的规范性在提升了app的品质的同时也带来了对开发者的限制。翻阅了各种官方文档和资料,得出结论如下:
1、实现后台定位有2种方式:
  • standard locationservice(调用CLLocationManager的startUpdatingLocation)
  • significant-change location service(调用CLLocationManager的startMonitoringSignificantLocationChanges)
2、两者区别:
  • 前者(startUpdatingLocation)是标准定位,想要在后台使用必须在info.plist文件中增加Requiredbackground modes属性,并选择App registers for location updates值。
  • 前者(startUpdatingLocation)在后台运行时可能会因为资源问题被系统挂起(suspend)或终止(terminate),但一旦有更新会被唤起,但是当更新时系统任然资源紧张,则会被延迟调用委托。如果对于实时性要求高的可能不适合这个,很难控制用户机器性能状况。
  • 前者(startUpdatingLocation)如果被用户手动关闭,就不会再被唤醒。
  • 前者定位基于gps/基站/wifi定位,具体使用哪一种CoreLocation框架有一套自己的规则。
  • 后者(startMonitoringSignificantLocationChanges)是使用基站定位的,所以设备一定要有电话模块,在plist中可以设置xx属性来限制可被下载安装的设备。
  • 后者(startMonitoringSignificantLocationChanges)不管是在后台还是用户手动关闭都会被唤醒调用委托,只有3种方法可以阻止它的更新。(1)用户关闭定位服务(2)用户关闭对该app的定位服务(3)设备处于飞行模式或者无法开启必要的硬件(猜测是定位模块的硬件)。
  • 后者(startMonitoringSignificantLocationChanges)什么时候更新呢?是在更换基站的时候更新。所以更新频率与基站密度有关。市区更新频率较郊区高。所以很多同学说没有更新是因为还在同一组基站范围内。
  • 前者较后者耗电且精度高。
3、两者共性:
  • 两者都更新位置信息时都回调相同的委托方法:-(void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray*)locations;

4、上传信息:

由于后台任务只分配了有限时间执行必要的操作,所以如果在超时之前未完成(比如网络请求),app将会被终止。这里有一个方法,可以申请额外的10分钟让你执行想要的操作,申请后台任务:beginBackgroundTaskWithExpirationHandler(不详细说了,使用方法可以查一下资料)。

5、总结:

2种方式各有利弊,根据使用场景而决定,前台运行的app通常要求准确实时定位,并且运行时间有限,考虑用第一种标准定位,比如导航应用。如果移动速度快(距离变化明显),长时间定位(监控),可以考虑后者,比如打车应用。

reference:

[1]http://www.mindsizzlers.com/2011/07/ios-background-location/

[2]https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html

掌握iOS后台定位技术:从核心概念到应用实现 Core Location是iOS开发者必须熟悉的框架之一,它为应用程序提供了位置服务的访问功能。通过Core Location框架,开发者能够获取设备的当前位置、跟踪位置变化以及解析地理信息。该框架通过使用GPS、Wi-Fi、蜂窝网络等多种技术,为应用提供精确的定位服务。 阅读详情

相关推荐

最全中文停用词表(可直接复制)

最全的停用此表整理 词表名 词表文件 中文停用词表 cn_stopwords.txt 哈工大停用词表 hit_stopwords.txt 百度停用词表 baidu_stopwords.txt 机器智能实验室停用词库 scu_stopwords.txt 以上停用词表链接:https://github.com/goto456/stopwords 以下是我常用的1893个停用词,可直接复制 ! " # $ % & ' ( ) * + , - -- . .. ... ....

dilifish的博客 12万+

iOS后台运行模式(background execution mode)

后台运行模式

realyezi的博客 9169

ANSYS Products19.1下载及安装教程

ANSYS Products19.1下载及安装破解教程 前言 ANSYS软件是美国ANSYS公司研制的大型通用有限元分析(FEA)软件,是世界范围内增长最快的计算机辅助工程(CAE)软件,能与多数计算机辅助设计(CAD,computer Aided design)软件接口,实现数据的共享和交换,如Creo, NASTRAN、Algor、I-DEAS、AutoCAD等。ansys project包括一整套的软件集合,它耦合了CFD模型的前处理,求解器和后处理所需要的相关软件,特比是它的workbench模块,

Mekeater的博客 2万+

位置识别编程指南

from:http://supershll.blog.163.com/blog/static/37070436201272221724960/ 一、获得用户的位置 使用CoreLocation框架。 1、如果你的应用基于位置来正确运行,你应该在你的Info.plist中包括UIRequiredDeviceCapabilities键.App Store使用这个信息来阻止没有定位的设备下载该应用

wangyx810328的专栏 1751

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

外设高级定时器互补输出带死区控制实验

外设高级定时器互补输出带死区控制实验

ff_juju的博客 1652

iOS 通过定位启动App

本文介绍iOS定位的三种情况:本文介绍iOS定位的三种情况:iOS前台定位以及不同版本(iOS 7、8、9)之间定位的基本使用和异同点iOS后台(Background)的持续定位APP未运行(Not running)被用户or系统强行退出后,系统依然可以自动启动应用,进行关键位置定位startMonitoringSignificantLocationChanges本文的Demo可以在这里下载查看。...

weixin_42140381的博客 1796

如何解除Uniaccess管控??

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2380

后台运行GPS

当程序切换到后台后仍然开始gps 的方法其实很简单 只需要在 info.plist 里加上 "Required background modes" 这个项 然后添加这个项的1个 item "App registers for location updates" 然后你的app 如果在前台开启了 gps ,切到后台后 依然会持续更新gps 信息 调用代理方法.

xiaoxuan415315的专栏 4387

建模simulink - 手把手教你搭建xpc平台

概述xpc半实物仿真目标是个基于RTW对低端实时仿真和开发平台,可将计算机或者工控机转变为一个实时系统,不需要第三方操作系统对支持,在计算机上配置输入输入出设备就能和外部交换信息,进行硬件...

不只会拍照的程序猿 7087

eNSP与我这24H2版本不兼容,路由器40错误。这该怎么处理(操作系统-windows)(相关搜索:虚拟机)

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 4108

实现 iOS 后台定位的两种方式

工作中碰到一个定位的应用场景:app需要在后台运行,实时上传用户地理位置。 苹果对iOS的规范性在提升了app的品质的同时也带来了对开发者的限制。翻阅了各种官方文档和资料,得出结论如下: 1、实现后台定位有2种方式: standard location service(调用CLLocationManager的startUpdatingLocation)signif

魔羯座的博客 917

RK3399快速上手 | 01- 开发环境搭建(固件烧写、编译工具链安装、kernel编译)

一、编译工具链 编译工具链使用gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu。 下载地址: https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/ wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabi

Mculover666的博客(嵌入式) 8834

iOS开发中实现后台定位功能

工作中碰到一个定位的应用场景:app需要在后台运行,实时上传用户地理位置。 苹果对iOS的规范性在提升了app的品质的同时也带来了对开发者的限制。翻阅了各种官方文档和资料,得出结论如下: 1、实现后台定位有2种方式: standard location service(调用CLLocationManager的startUpdatingLocation)signif

sinat_20940101的专栏 1147

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【iOS】TTS后台播报(通过后台定位实现)

文章目录需求分析实现计划具体实现1、项目设置2、代码实现 需求分析 1、APP进入后台,防止被杀死,保持socket链接; 2、socket接收到消息,通过TTS播报处理; 实现计划 1、APP进入后台,发起定位,不终止; 2、当接收到socket消息时,TTS播报socket消息; 具体实现 1、项目设置 2、代码实现 #import "ViewController.h" #import <AVFoundation/AVFoundation.h> #import <CoreLocat

这家伙很懒,博客简介都不写 2209

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

React Native后台定位实现:iOS enableBackgroundLocationUpdates配置教程

React Native后台定位功能是移动应用开发中的重要需求,尤其是在需要实时追踪用户位置的场景中。本文将详细介绍如何在iOS平台上配置`enableBackgroundLocationUpdates`属性,实现React Native应用的后台定位功能。 ## 一、了解enableBackgroundLocationUpdates属性 `enableBackgroundLocationUp

gitblog_00848的博客 363

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: Android的快速开发框架 afinal
下一篇: 安卓实现多次点击
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值