是否可以仅使用区域监控 + GSM 并获得不超过 5 公里的水平精度?

2023-11-26

我想分享我执行的测试场景的信息,并请您分享您在区域监控方面的经验。因此,我注册了两个相对的区域(A 和 B),半径为 5 公里,所需精度为 1 公里,它们之间的距离为 20 公里。但是,从 A 到 B 时,我没有收到任何 didEnterRegion/didExitRegion 事件。在我的应用程序原型中,我还放置了两个按钮(用于测试目的):一个启动重大更改,另一个启动标准位置监控。两者都在屏幕日志上打印 didUpdateToLocation 事件。

因此,在到达 B 区中心并对不可预测的功能感到非常恼火之后,我启用了重要的监控。之后,我收到了几个 didUpdateToLocation,horizo​​ntalAccuracy 约为 8.5 公里!哇,这很痛苦,因为我想做的就是拥有一个功能,可以通知用户,他想要的位置是距离他当前位置位置半径 5 公里的某个地方,并且我想依赖 GSM 小区三角形位置仅检测方法(用于保护电池)。

那么,回到我的例子。在出现如此大的 8 公里误差后,我启用了具有最佳精度的标准监控(GPS)。宾果,我收到了水平精度为 399 m 的 didUpdateToLocation 事件,直到那时,我才从我的初始位置(区域 A)收到了 didExitRegion 事件,以及另一个带有 didEnterRegion (B)的事件。 didUpdateToLocation 的另一个更新更准确一些 - 50m。

在之前的场景中,我的准确性也不稳定。有时有4公里水平精度,有时更少。但主要问题是,如果我们想节省电池(苹果在文档中教我们这一点),那么我们可以只依靠区域监控+ GSM 而不使用 GPS 吗?有一个苹果代码示例,其中包含“正确使用区域监控”(here),但也有一些令人无法接受的地方:

1)他们指出示例代码仅适用于 iPhone 4,Apple 文档指出 iOS 4.0+ 支持区域监控和重要监控。很酷,哈?

2) 示例代码使用了全部 3 种定位方法:significant、standard、region。它始终使用区域监控,但此外还使用最准确的标准位置。当应用程序进入后台时,它会停止标准并开始重大变化监控。当进入前台时,应用程序会停止并开始标准位置。似乎苹果文档相当模糊,不清楚如果我们只使用区域监控,我们会得到什么惩罚(horizo​​ntalAccuracy),或者我们是否总是使用所有三种方法?

3) Apple 文档指出,我们需要保留电池并根据需要使用最低限度的定位服务,如果我们不需要 GPS,那么我们应该使用 GSM(例如,1 - 3 公里所需的精度)。但示例代码使用最佳所需精度 (GPS) 进行区域监控和标准监控(当应用程序位于前台时)。我确实知道 GPS 可以解决我所有的错误和准确性问题,但仅使用 GSM 怎么样?在我的场景中获得 8.5 公里水平精度后,我不确定是否可以使用区域监控,因为它无法提供至少 5 公里的可接受误差。


根据我的经验,区域监控非常准确,不会对电池寿命造成重大损失。我有一个只有30-50米宽的区域的使用场景。准确性完全没有问题。我要说的一件事是,我只针对 iPhone 4 及更高版本的设备。如果我想支持 3GS 型号,我需要实施您提到的一些更改。

当纯粹依赖 -startMonitoringForRegion 时,您的更新会自动触发 -didEnter 和 -didExit 事件。这些是通过位置跟踪事件的组合触发的。重大变化、手机信号塔传输、WiFi 连接、另一个应用程序请求位置等等。当这些其他共享位置事件触发回调时,操作系统会进行处理。根据我的经验,它非常准确。但这仅适用于 iPhone 4 及更高版本。

我还使用了 Apple 的示例应用程序来进行设置,但文档中没有提供有关何时/何处获取触发器的详细信息。您可以阅读 Apple 提供的内容位置意识指南。希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以仅使用区域监控 + GSM 并获得不超过 5 公里的水平精度? 的相关文章

  • 动态模拟iOS动态类型系统文本大小(UIContentSizeCategory)

    我想使用不同的系统文本大小选择 包括辅助功能大小 轻松测试我的应用程序 这些可以在 设置 应用程序中进行设置 显示和亮度 gt 文本大小或常规 gt 辅助功能 gt 较大文本 目前我能找到的唯一方法是进入 设置 并使用 UI 更改值 编辑
  • iOS 中的自定义阿拉伯字体

    我正在尝试制作一个主要显示阿拉伯语内容的 iPhone 应用程序 我想使用自定义阿拉伯字体来显示该内容 而不是 iPhone 默认的阿拉伯字体 我使用了以下代码 void viewDidLoad super viewDidLoad arab
  • UIImage initWithContentsOfFile 不起作用

    我有问题 我想避免 UIImage imageNamed 所以我做了 UIImage prodImg UIImage alloc initWithContentsOfFile myimage png controller productIm
  • iOS - 自动调整 CVPixelBufferRef 的大小

    我正在尝试裁剪和缩放CMSampleBufferRef基于用户的输入 基于ratio 下面的代码采用 CMSampleBufferRef 将其转换为 CVImageBufferRef 并使用 CVPixelBuffer 根据其字节裁剪内部图
  • CoreData:是否将图像存储到数据库?

    我正在制作一个应用程序 它从网站上为某些用户名拍摄照片 并将其显示在带有用户名的 UITable 中 然后当单击用户名时 它会显示该用户的照片 然后单击照片名称 它会显示全屏照片 我的问题是我正在使用 NSData 从互联网获取照片 我必须
  • 如何降低iphone的sdk Audioqueue的声音?

    我正在使用 Aran Mulhollan 的 RemoteIOPlayer 在 SDK iphone 中使用音频队列 我可以毫无问题 添加两个信号来混合声音 通过乘以从 wav 文件中获得的 UInt32 来增加音量 但所有其他操作都会给我
  • 如何在 UILabel.text 中添加制表符空间

    我有一个 UILabel 实例 比如 mylabel 我想做的是这样的 mylabel text Age tLimit tYear instead of mylabel text Age Limit Year 但当我尝试时 t 未被识别 如
  • 导出 iPhone 地址簿数据库的可能方法

    我想将 Phone s Address Book sqlite db 导出到我的 iPhone 应用程序中 我在网上搜索过 但一切似乎都在 ABAddressBook 上迭代 但我想知道是否可以以编程方式将 Phone s Address
  • 使用 Objective-C 将 HTML 文本转换为纯文本

    我有巨大的NSString里面有 HTML 文本 该字符串的长度超过 3 500 000 个字符 我怎样才能将此 HTML 文本转换为NSString里面有纯文本 我正在使用扫描仪 但它运行速度太慢 任何想法 这取决于您的目标 iOS 版本
  • 我如何知道网页视图已加载完成

    我有网络视图 因为我正在加载pdf文件 pdf 文件大小为 2 mb 因此需要时间 我想添加指标 为此 我如何知道我的文件已加载到网络视图中 UIWebView 委托 http developer apple com library ios
  • iPhone——是否可以在 Xcode 调试器中检查 UIView 的框架?

    当调试器在断点处停止时 我在那里找不到任何 UIView 的框架 是否有可能做到这一点 编辑 由于缺乏回应而开始赏金 需要明确的是 我正在寻找一种在不添加额外调试代码的情况下查看框架的方法 另外 如果答案是 不 你不能这样做 赏金将用于解释
  • 在 iOS 模拟器主屏幕或锁屏中设置壁纸(背景图像)

    当我正在绞尽脑汁思考某件事时 我的脑海中突然出现了这个想法 我们可以将模拟器的主屏幕背景图像设置为我们选择的图像吗 Xcode 3 2 2 模拟器 3 1 3 就是一个很好的例子 Certain versions of the simula
  • UITextField 文本更改事件

    如何检测文本字段中的任何文本更改 委托方法shouldChangeCharactersInRange适用于某些东西 但它并不能完全满足我的需求 因为在它返回 YES 之前 textField 文本不可用于其他观察者方法 例如在我的代码中ca
  • AVAudioPlayer只能在模拟器中播放,但不能在设备中播放,为什么?! (iPhone-SDK)

    我有以下播放声音的简单代码 NSString soundPath NSBundle mainBundle pathForResource sound ofType wav player AVAudioPlayer alloc initWit
  • UISegmentedControl 中的自定义字体禁用调整FontSizeToFitWidth

    我已经为我的 UISegmentedControl 设置了自定义字体 但它似乎禁用了默认字体自动调整字体大小以适合宽度范围 Before After 这是我用来设置自定义字体的代码 UISegmentedControl segmentedC
  • 保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS、Xcode 4)

    在我的应用程序中 我希望用户能够录制一个声音文件并播放它 然后保存该声音文件以供以后使用 我用了本教程 http www techotopia com index php Recording Audio on an iPhone with
  • 从视频创建缩略图 - 提高速度性能 - AVAsset - iPhone [重复]

    这个问题在这里已经有答案了 我正在使用基于以下线程中的代码的代码来生成视频缩略图 从 iPhone SDK 中的视频 URL 或数据获取缩略图 https stackoverflow com questions 1347562 gettin
  • NSMutableArray 实例变量内存管理

    我正在做最后一点内存管理整理 但有些东西我不明白 我已经检查了所有文档 Stack Overflow 等 但仍然不明白 我怀疑这与数组有关 我有一个NSMutableArray作为实例变量 我用它来保存从另一个数组中的对象创建的对象 vie
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经
  • iPhone 中的 NSNotification

    我正在将 NSSNotifcation 发送到 iPhone 应用程序中的另一个视图控制器 但它的观察者方法收到两次通知 这可能如何 任何人都可以指导我 我已经使用此代码来发布通知 NSNotificationCenter defaultC

随机推荐

  • 共享与非共享定点组合器

    这是 Haskell 中定点组合器的通常定义 fix a gt a gt a fix f let x f x in x On https wiki haskell org Prime numbers 他们定义了一个不同的定点组合器 Y t
  • 如何使用 Javascript/jQuery 从 div 内容中去除 HTML 标签?

    我做了一个div标签并将其内容存储在变量中 如果这个标签包含p b或任何其他标签 那么应该将其从字符串中删除 我怎样才能实现这个目标 使用正则表达式 var regex lt gt gt ig var body p test p var r
  • 如何在 mac osx 上安装 libksba?

    根据rvm要求 对于Ruby 1 9 3 安装libksba 如果使用Homebrew brew install libksba 我是全新的 不熟悉终端命令 如何在不使用 homebrew 的情况下安装 libksba 请帮忙 我刚刚从源代
  • 基于 GUI 或基于 Web 的 JSON 编辑器,其工作方式类似于属性资源管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 背景 这是对可能尚不存在的
  • sbt 0.11:使用企业 Maven 存储库

    如何将企业 Maven 存储库与 sbt 0 11 x 一起使用 排除其他存储库 如中所述如何让 sbt 使用本地 Maven 代理存储库 Nexus 没有提到ivyRepositories在 github 的新 sbt wiki 中 所以
  • C++ 预处理器元编程图灵完备吗?

    我知道 C 模板元编程是图灵完备的 同样的事情也适用于预处理器元编程吗 宏不会直接递归扩展 但我们可以通过一些方法来解决这个问题 在预处理器中执行递归的最简单方法是使用延迟表达式 延迟表达式是需要更多扫描才能完全扩展的表达式 define
  • 当文本框获得焦点时选择文本框的内容

    我在中找到了与我类似的问题使 WinForms TextBox 的行为类似于浏览器的地址栏 现在我正在尝试通过使其通用来修改或使其更加不同 我想对表单中的所有文本框应用相同的操作 而不需要为每个文本框编写代码 我不知道有多少 一旦我在表单中
  • 打包一个Python应用程序

    如何打包和分发由多个文件组成的Python应用程序 我的应用程序需要一个必须由用户填写的配置文件 我想我正在寻找类似于我在 Linux 机器上使用的配置 制作 制作安装 制作文档的步骤 有不同的解决方案可用 每种解决方案都涉及您的代码库遵守
  • PowerShell/CLI:具有多个数组的“Foreach”循环

    我有一个 PowerCLI 脚本 可以关闭虚拟机电源 更改其内存和 CPU 然后重新启动 我已经调整了脚本以利用变量 这一切都很完美 我现在正在尝试修改脚本以利用数组 以便循环遍历多个虚拟机 关闭和打开虚拟机电源的脚本部分运行良好 我遇到的
  • 在Java中查询系统(不是JVM)正常运行时间[重复]

    这个问题在这里已经有答案了 JavaSE 6 中是否有一种与操作系统无关的方法来查询系统 不是 JVM 我知道 RuntimeMXBean getUptime 正常运行时间 Thanks 是和不是 有系统特定查询正常运行时间的方式 例如 n
  • 使用 C# SQL 插入查询

    我目前遇到一个问题 正在尝试解决 我只是尝试在 C 的帮助下访问数据库并插入一些值 我尝试过的事情 有效 String query INSERT INTO dbo SMS PW id username password email VALU
  • 使用与列同名的变量对 data.table 进行子集化

    我想对 a 进行子集化data table使用与列同名的变量会导致一些问题 dt lt data table a sample c a b c 20 replace TRUE b sample c a b c 20 replace TRUE
  • 如何在jquery中的特定字符之后分割字符串[重复]

    这个问题在这里已经有答案了 这是我的代码 var string1 Hello how are you 我想要一个在 之后的字符串 即整个字符串中的 you 假设该字符串始终有一个 字符 并且我希望该字符之后的所有字符串都位于 jquery
  • 有没有办法将系统日志消息重定向到标准输出?

    我有一个可以以两种模式运行的应用程序 使用 CLI 或作为守护程序 我在用syslog 用于记录 但是 当在 CLI 模式下运行时 我想要所有日志记录 除了那些标记的日志记录LOG DEBUG 消息发送到控制台而不是记录 我尝试过使用set
  • 异步生成器和 Observables 之间有什么区别?

    异步生成器 一个示例案例是可读流 可观测值 处理异步数据流的基本协议 这两种方法似乎都是解决异步数据流同一问题的不同方法 除了品味问题之外 两者之间还有实际区别吗 从建议的API描述来看 observables 可以有多个订阅者 广播 异步
  • tf.audio.decode_wav 如何获取其内容?

    我正在尝试使用以下命令将一些音频文件拉入 Tensorflowtf audio decode wav 我可以看到有人正在考虑在文档中提供更多信息 但是有人有任何关于这应该如何工作的示例吗 tf audio decode wav conten
  • 从深度缓冲区获取真实的 z 值

    正如预期的那样 从着色器中的深度缓冲区采样会返回 0 到 1 之间的值 给定相机的近剪裁平面和远剪裁平面 如何计算此时的真实 z 值 即距相机的距离 From http web archive org web 20130416194336
  • 将类保存到二进制文件中 - Python

    我知道可以使用以下方法将类保存到 C 中的二进制文件中 file write Class variable size of class amount of saves file where to save 或类似的东西 我想在 python
  • MailApp.sendEmail 错误消息 - “无权调用 sendEmail”[重复]

    这个问题在这里已经有答案了 当我更改电子表格中的某些内容时 onEdit 触发器运行 我可以看到我放入代码中的所有消息框 我的函数停在这一行 MailApp sendEmail emailAddress subject message 我从
  • 是否可以仅使用区域监控 + GSM 并获得不超过 5 公里的水平精度?

    我想分享我执行的测试场景的信息 并请您分享您在区域监控方面的经验 因此 我注册了两个相对的区域 A 和 B 半径为 5 公里 所需精度为 1 公里 它们之间的距离为 20 公里 但是 从 A 到 B 时 我没有收到任何 didEnterRe