Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 背景中的核心运动?_Iphone_Ios_Core Motion - Fatal编程技术网

Iphone 背景中的核心运动?

Iphone 背景中的核心运动?,iphone,ios,core-motion,Iphone,Ios,Core Motion,当应用程序在后台时,核心运动框架会工作吗?取决于您对工作的定义。。。核心动画是否需要继续运行,还是希望视图冻结?当应用程序在后台运行时,只允许运行某些进程。(例如通知) 在大多数情况下,应用程序UI都会暂停,直至触发ApplicationIDBecMeactive。一旦它再次启动,它应该继续运行,但不能在后台继续运行。对于运行OpenGL的iOS上的大多数游戏来说也是如此,它会暂停,直到应用程序再次激活。其中一个应用程序-用于跟踪你的行走步数的移动非常惊人,因为即使你将其放入背景或杀死,它也可以

当应用程序在后台时,核心运动框架会工作吗?

取决于您对工作的定义。。。核心动画是否需要继续运行,还是希望视图冻结?当应用程序在后台运行时,只允许运行某些进程。(例如通知)


在大多数情况下,应用程序UI都会暂停,直至触发ApplicationIDBecMeactive。一旦它再次启动,它应该继续运行,但不能在后台继续运行。对于运行OpenGL的iOS上的大多数游戏来说也是如此,它会暂停,直到应用程序再次激活。

其中一个应用程序-用于跟踪你的行走步数的移动非常惊人,因为即使你将其放入背景或杀死,它也可以指示你行走的步数。因此,当应用程序被关闭时,陀螺仪、GPS和其他传感器的某些内部机制可以继续运行。

为了让应用程序在后台运行,您必须将其声明为后台任务。问题是只有几个。。。运动不是其中之一


一种解决方法是启用UIBackgroundMode
位置
,它旨在让用户知道他们的位置,即使应用程序在后台。然后,您可以将您的运动逻辑封装在其中。然而,明显的缺点是,这涉及到GPS的使用,这将大大耗尽电池

核心运动框架允许访问CMPedometer数据的历史数据,因此如果您的应用程序仅使用此框架,则无需在后台运行

上周我一直在玩CM,在我的测试中,如果你的应用程序被发送到后台时有一个活动查询正在运行,那么查询处理程序在返回前台时会收到大量事件(发生在应用程序挂起时)。我不知道有多少事件将被缓存,我也没有在文档中看到任何关于这方面的内容


这种行为似乎已经足够了。我想不出一个核心运动的用例,在这个用例中,你需要不断的背景访问,历史CM计步器数据不够,并且符合应用商店的指导原则。

你有没有找到满意的答案?我已经看到一些计步器在从背景模式返回后获得核心运动的数据。因此,应该有一种方法可以通过
startAccelerometerUpdatesToQueue
继续接收数据。对我来说,在我将应用程序放到后台几秒钟/分钟后,它就会工作,但一段时间后它就会停止。可能您必须使用其中一种背景模式(音频、位置、voip)来保持应用程序的“活动”。如果启用位置的背景模式,请记住在app store的应用程序描述中添加以下语句:“继续在后台使用GPS会显著缩短电池寿命”。否则,app store review不会批准该应用程序。如果你的应用程序在后台没有明确使用核心位置框架,那么你被接受的可能性很小。你在所有方面都是对的,但当应用程序在后台时,CMPedometer有一个使用案例:如果你在应用程序图标上的徽章中显示步数,然后你需要每隔一段时间唤醒你的应用程序(当iOS后台模式决定它是否合适时),并更新它的徽章数量;由于您在后台无法访问实时流,因此可以使用
queryedometerdata(从开始:Date到结束:Date,使用handler:@escaping CMPedometerHandler)
。我想苹果会让它通过,因为它不常见,而且大多无害。