CoreMotion 在后台状态更新

2023-12-22

借助最新 iOS 设备中的 M7 芯片,当用户使用 CMMotionActivityManager 从静止状态变为跑步、行走等时,可以通过编程方式获得通知。 Stava 和 Runkeeper 都用过这个自动暂停 GPS 轮询 http://gigaom.com/2013/09/24/strava-run-app-races-to-use-apples-m7-in-the-iphone-5s-to-save-battery-life/(关闭 GPS 天线)当它检测到用户没有通过 M7 移动时,然后在用户再次移动时重新启用 GPS 更新。它能够在应用程序处于后台状态时执行此操作,这是这里的关键。

我在复制此功能时遇到的问题是,如果我在应用程序处于后台时关闭 GPS 更新,我将停止接收活动更新,并且无法再检测用户何时通过 M7 再次移动以重新打开 GPS。

如果我让 GPS 一直运行,我将在应用程序处于后台的整个过程中继续从 Core Motion 获取运动更新。

我假设他们没有玩白噪音或其他一些廉价的技巧来保持活跃。他们是怎么做的?


RunKeeper 实际上确实使用音频技巧来保持清醒。如果您打开应用程序包并检查其 Info.plist,您将看到它注册了背景音频模式。这就是他们如何定期发出有关您的距离、速度和配速的音频通知的方式。这也是它们在跑步过程中保持清醒同时最大限度减少电池消耗的方式。

如果您注意到在使用 RunKeeper 时位置服务图标(状态栏中的三角形)完全消失,那么它们肯定没有使用任何类型的位置跟踪来完成后台执行。即使激活地理围栏和重大位置变化监控也会导致定位服务图标出现。

他们也不会使用 M7 来保持清醒,因为它不起作用。 M7 相关 CoreMotion API 的更新不会将您的应用程序从睡眠状态唤醒。当他们的应用程序醒来时,他们将能够查询运动活动和步数历史记录,并可能尝试计算一些东西,但我怀疑它是否会那么准确。

最后您应该注意,自动暂停 API 是在 iPhone 5s 和 M7 芯片发布之前在 iOS 6 中引入的。它们是正交的概念。

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

CoreMotion 在后台状态更新 的相关文章

  • NSTimer 不触发选择器

    在带有 ARC 的 ios5 0 中 在我的 rootviewcontroller 中 我调用由应用程序委托持有的安全管理器对象中的方法 在该方法中 我设置计时器如下 NSTimer timer NSTimer scheduledTimer
  • Cordova 在 iOS 中显示警告“线程警告:[您的函数]花了 [n] 毫秒”

    THREAD WARNING Console took 81 661865 ms Plugin should use a background thread 在跑步的时候iOS 手机差距项目 对于一些剩余的插件 例如地理位置和文件系统 也是
  • 在视图之间传递核心数据实体变量

    我无法理解如何在视图之间使用核心数据实体变量 为了更好地理解我的问题是什么 我的代码如下 View A 基本上 您必须将完整预算实体或相关预算实体的 ID 从视图 A 传递到视图 B 由于不知道您的应用程序的视图层次结构和逻辑 我假设您选择
  • AWS S3 公共对象与私有对象?

    回到 S3 我的存储桶中有图像的 URL 我将在我的应用程序中呈现这些图像 但它们被设置为私有 当我尝试单击该链接时 它显示 访问被拒绝 当我将链接的设置更改为公共时 它会通过 但是我读到公共访问并不是最安全的事情 所以这本质上是一个由两部
  • ios - 在哪里放置 s.static_framework = true

    我在 CocoaPods 中的级别为 0 当我使用pod install有一个错误说 The Pods App target has transitive dependencies that include static framework
  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • 适用于 IOS 和 Android 的支付网关 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个应用程序 用户必须在澳大利亚餐馆通过应用程序 android ios 付款 有两种付款方式 通过 PayPal 或 Visa
  • 自定义 UITableViewCell 选择样式?

    当我点击我的UITableViewCell 当我单击单元格时 背景部分 我的背景图像未覆盖的区域 会变成蓝色 另外 所有的UILabel单击时单元格上的 s 变为白色 这就是我想要的 然而 我不想要的是当我点击它时的蓝色背景 但如果我这样做
  • 在iOS上,“添加到主页”缓存保存在哪里,如何清除它?

    我正在 iPad iOS v7 上制作一个 html5 游戏 当我将其添加到主页时 它非常顽固地释放缓存 如果我在 Safari 中查看它 这会按照您所期望的方式工作 如果我刷新一次或两次 页面就会以最新状态缓存 但在主页上却是另一回事 它
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 以编程方式触发iOS摇动事件

    如何以编程方式触发 iOS 中的摇动事件 我尝试过以下方法 但它总是崩溃 void shake NSLog TEST UIMotionEventProxy m NSClassFromString UIMotionEvent alloc in
  • 个人帐户开发者之间的 Apple 开发/分发证书

    我一直在到处寻找有关处理证书的正确答案 想象一下以下帐户 Joe拥有个人 Apple 帐户 但他根本不会编码 他只是发布了该应用程序并将其称为自己的 Bob还有一个个人 Apple 帐户 Bob 是一位编码专家 Joe 付费让他开发他的第一
  • 检测 AvPlayer 何时切换比特率

    在我的应用程序中 我使用 AVPlayer 通过 HLS 协议读取一些流 m3u8 文件 我需要知道在流会话期间 客户端切换比特率多少次 我们假设客户端的带宽正在增加 因此客户端将切换到更高比特率的段 AVPlayer能检测到这个开关吗 T
  • 我怎样才能勾勒出文本字体?

    我想在边框 轮廓 中显示另一种颜色的文本 我正在尝试使用在 MapOverlayView 中显示文本 text drawAtPoint CGPointMake 0 30 withFont UIFont fontWithName Helvet
  • Google 地图 API -> OpenGLES 崩溃

    日志是从 Crashlytics 粘贴的 对于许多用户来说 崩溃经常发生 据我所知 它与设备 iOS 版本无关 我在我的代码中找不到任何错误 这似乎是纯粹的库问题 是 Google 地图 API 错误吗 我可以做些什么来修复它 或者我应该在
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 避免 UIImage 的 imageNamed - 内存管理

    我正在经历这个链接 http akosma com 2009 01 28 10 iphone memory management tips 我遇到了一个点避免 UIImage 的 imageNamed 出于什么原因我们应该避免这种情况 它会
  • Swift C 回调 - Swift 类指针的 takeUnretainedValue 或 takeRetainedValue

    我有一些UIView or UITableViewCell 里面我有 C 回调 例如 CCallback bridge self observer data gt Void in let mySelf Unmanaged
  • 在故事板中的视图控制器之间滑动手势

    我希望添加左右滑动手势来在视图控制器之间进行更改 这是否可能 并且有没有一种简单的方法可以在故事板中执行此操作 谢谢 故事板允许您在两个视图控制器之间设置 Segues 我想说首先在视图之间附加 Segues 给它一个标识符 然后使用类似的
  • RemoteIO 音频单元播放回调中的 AudioBufferList 内容

    我想 拦截 音频数据传送到 iOS 设备扬声器的过程 我相信这可以使用 RemoteIO 音频单元和回调来完成 在下面的playbackCallback中 ioData实际上包含任何音频数据吗 static OSStatus playbac

随机推荐

  • 在 Spring Batch 项目中实现 ItemReader 时如何打开 Reader?

    在 Spring Batch 项目中 我需要用多行组成一条记录 我正在实施ItemReader在返回对象之前累积多行 在完成了几个示例项目之后 我将其拼凑在一起 但我面临着ReaderNotOpenException 我已经三次检查文件的路
  • 电子邮件确认不存储 Django allauth

    我正在使用 Django allauth 和 django rest auth 我通过电子邮件确认实现了身份验证 但现在我意识到它不能完全正常工作 因为我没有在数据库中存储发送电子邮件确认 在管理中看不到它们 电子邮件确认正在按应有的方式发
  • Pandas:根据另一列中的值对两列进行分组

    我对 python pandas 很陌生 我有一个看起来像这样的数据框 id name color id 1 alex blue id 2 james yellow id 1 sara black id 4 dave pink id 4 l
  • 使用反射将字符串转换为 Nullable

    如何使用反射将字符串转换为可空值 我有以下代码可以将几乎任何值转换为几乎任何值类型 上面有相当多的代码使用 IsAssignableFrom 等 所以这是最后的手段 MethodInfo parse t GetMethod Parse ne
  • 取消注册通过清单注册的广播接收器

    是否可以注销BroadcastReceiver已通过清单注册 另请告诉我是否可以忽略BroadcastReceiver 无需进行任何代码更改 因为这样BroadcastReceiver现在对我来说没有用了 谢谢 您可以使用以下代码禁用接收器
  • 如何通过代码注册一个Spring ApplicationListener实现?

    我有一个 Spring 的实现ApplicationListener 当它在上下文 xml 文件中声明为 bean 或如果我使用时 它工作正常并接收事件 Component注解 但是 如果我使用以下代码通过代码手动注册它 它不会接收事件Co
  • Java:println中的布尔值(布尔值?“打印真”:“打印假”)[重复]

    这个问题在这里已经有答案了 我遇到了这个语法 System out println boolean variable print true print false 这个带有两个点 的语法是什么 我在哪里可以找到相关信息 它只适用于布尔值还是
  • C、套接字:连接被拒绝错误

    我有一个数据采集模块 我想从中收集以太网端口的数据 我正在一步步到达那里 目前我只想connect从客户端到服务器 我使用 Beej 的指南来获取基本的 C 代码 但我不断收到此连接错误connect Connection refused
  • 以编程方式更改 WPF TextBox 中的验证规则

    我有一个如下定义的文本输入区域
  • 如何创建虚拟 Windows 驱动器

    我正在尝试创建一个 Windows 虚拟驱动器 如 c 来映射远程存储 主要目的是以用户清楚的方式做到这一点 因此 用户不会知道他正在从另一个站点写入 读取 我正在寻找可用的产品 我发现FUSE在Windows中不是一个选项 而WebDAV
  • 如何为 hadoop 2.0 编译/使用 mahout?

    最新版本的 Mahout 0 9 仅基于 hadoop 1 x 构建 mvn 干净安装 如何为 hadoop 2 0 x 编译 mahout 因为当我运行命令时 hadoop jar mahout examples 0 9 SNAPSHOT
  • 如何使用可变大小的缓冲区获取c类型结构中字段的值?

    import readboard import struct import ctypes as c def readbuffer data size struct unpack
  • 碰撞检测/从 ArrayList 中删除对象

    我目前正在尝试测试下落物体和盒子之间的碰撞 我了解基本的碰撞检测 但我的问题是我必须测试它是否有无限数量的下落物体 当这些对象 blossoms 被创建时 它们被存储在一个ArrayList中 ArrayList 处理画布上对象的绘制 使用
  • 通过ilasm更改可执行图标

    我有一个安装程序应用程序 其中嵌入了 resx 文件 其中包含一些信息 例如服务器名称 端口 密码等 我必须生成这个安装程序 这个过程是自动化的 并通过我们的网站完成 对于每个客户 这工作正常 我用ildasm用于反汇编程序并替换 resx
  • 来自浏览器的过时加密警告

    我已经启动了带有 Apache 2 4 和 SSL 的 Windows Server 当我连接时https www example com https www example com然后点击绿色锁 我有消息 您与网站的连接已使用过时的加密技
  • 使用 Python 将整个 JSON 转换为一个 SQLite 字段

    我有一个可能很简单的问题 我正在尝试从在线源中提取 JSON 并将其存储在 SQLite 表中 除了将数据存储在丰富的表中 对应于 JSON 中的许多字段 之外 我还想在每次拉取时将整个 JSON 转储到表中 该表看起来像 CREATE T
  • 实现接口的类列表

    有没有办法实现类似的东西 List
  • 在jquery中获取外部url的html

    如何使用 jquery 获取外部 URL 的 HTML 简短的回答是你不能 因为 AJAX 请求被限制在相同的 子 域和端口上 同源政策 https developer mozilla org En Same origin policy f
  • Robocopy 后,复制的目录和文件在目标驱动器上不可见

    我很高兴使用 robocopy 将我的计算机备份到外部 USB 驱动器 这很棒 因为它只复制已更改 更新 新的文件 我可以将外部驱动器带到任何机器上并查看它 就像它是计算机上的另一个驱动器一样 我最近购买了一个 750g 和另一个 1tb
  • CoreMotion 在后台状态更新

    借助最新 iOS 设备中的 M7 芯片 当用户使用 CMMotionActivityManager 从静止状态变为跑步 行走等时 可以通过编程方式获得通知 Stava 和 Runkeeper 都用过这个自动暂停 GPS 轮询 http gi