这是一个 iOS 问题。
我想做的是在应用程序处于后台时收听内置计步器 (CMPedometer)。当计步器事件发生变化(从“步行”到“运行”再到“不动”等)时,我希望可以选择向用户的设备发送本地推送通知。
例如,应用程序位于后台。当我开始移动时,我收到一条推送通知,“你在移动!”当我停止移动时,我会收到一条推送通知,“你已经停止移动了!”
目前,我已经为我的后台模式设置了“位置更新”。该应用程序将在后台运行约 15 分钟并跟踪位置并执行我想要的操作(计步器数据更改时触发推送通知)。但 15 分钟后,它完全停止了。
我所描述的在设备上是否可行?如果是这样,应用程序在 15 分钟后超时,我做错了什么?
很高兴提供更多细节,但我不想让这个已经很长的问题过载!
最佳答案
当您的应用被暂停时,无法获得实时事件更新。
如果您想跟踪用户的事件,如步行、运行等,请使用 CMMotionActivityManager
。
Motion data reflects whether the user is walking, running, in a vehicle, or stationary for periods of time.
根据Documentation :
应用程序暂停时不会传递更新,应用程序可以使用 queryActivityStartingFromDate:toDate:toQueue:withHandler:
获取应用程序暂停时的事件。
因此,在后台跟踪用户事件的最佳方式是使用后台抓取,并将抓取间隔设置为最小值。
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
关于ios - 我可以在后台收听 CMPedometer 并根据不同情况发送本地推送通知吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28072009/