gpt4 book ai didi

ios7 - CMMotionActivityManager - 在应用程序暂停或在后台时接收运动事件更新

转载 作者:行者123 更新时间:2023-12-03 03:28:36 26 4
gpt4 key购买 nike

我一直在测试新的 Motion Activity Manager API (CMMotionActivityManager)。我想创建一个应用程序,当应用程序未在前台运行时,该应用程序可以接收和处理来自 startActivityUpdatesToQueue 的运动更新。当应用程序位于前台时,我正确接收运动更新(静止、行走、运行、汽车、未知),但一旦进入后台(因此被暂停),应用程序就停止接收运动更新。

CMMotionActivityManager Class Reference :“此方法异步启动运动数据跟踪。调用此方法后,运动事件管理器在指定队列上执行处理程序 block ,报告设备当前有效的运动。之后,运动事件管理器执行处理程序 block 仅当运动数据发生变化时。处理程序 block 会尽力执行,并且在您的应用程序暂停时不会传递更新。如果更新在您的应用程序暂停时到达,则最后的更新将在您的应用程序恢复执行时传送到您的应用程序。要获取应用暂停期间发生的所有更新,请使用 queryActivityStartingFromDate:toDate:toQueue:withHandler: 方法。”

我想要一种方法让我的应用程序在后台运行并接收运动数据(实时)。目前,保持应用程序在后台运行的唯一方法是使用后台服务,但“ Action 更新”不在允许的后台服务列表中:

App Store Review Guidelines :

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

我不想一直打开位置更新 (GPS)(以节省电量)。如果我指望持续的位置更新但关闭 GPS,则该应用程序将被暂停。

请告诉我如何让我的应用程序在后台运行并接收运动事件更新。一定有办法做到这一点:我尝试了 Strava 应用程序……即使该应用程序在后台运行,它也会在用户暂停运行时关闭 GPS。当用户恢复运行时,它会自动打开 GPS(所有这一切都是在应用程序处于后台时进行的)...这可能意味着应用程序正在后台运行,并且即使在 GPS 关闭时也会主动接收运动事件更新。

最佳答案

这不是一个新问题。从来没有Core Motion后台使用设置。如果您的应用程序在后台运行,您可以使用 Core Motion,但要使其在后台运行,您必须执行其他操作(例如,在用户将应用程序发送到后台时获取位置更新,并且您在 Info.plist 中列出 location 后台服务。

另请注意,在 iOS 7 中,如果您拥有合适的硬件,您可以使用延迟位置更新在后台定期唤醒您的应用程序。因此,您可以节省电量,但​​您的应用程序会时不时地在后台运行,而无需 Info.plist 后台服务列表。

关于ios7 - CMMotionActivityManager - 在应用程序暂停或在后台时接收运动事件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com