我可以在后台收听 CMPedometer 并在不同情况下发送本地推送通知吗?
Posted
技术标签:
【中文标题】我可以在后台收听 CMPedometer 并在不同情况下发送本地推送通知吗?【英文标题】:Can I listen to CMPedometer in the background and send a local push notification upon different conditions? 【发布时间】:2015-01-21 16:21:59 【问题描述】:这是一个 ios 问题。
我想做的是在应用处于后台时收听内置计步器 (CMPedometer)。当计步器活动发生变化时(从“步行”到“跑步”再到“不动”等),我希望可以选择向用户的设备发送本地推送通知。
例如,应用程序位于后台。当我开始搬家时,我会收到一条推送通知,上面写着“你要搬家了!”当我停止移动时,我会收到一条推送通知,上面写着“你已经停止移动了!”
目前,我已经为我的后台模式设置了“位置更新”。该应用程序将在后台运行大约 15 分钟并跟踪位置并执行我想要的操作(当计步器数据更改时触发推送通知)。但 15 分钟后,它完全停止了。
我所描述的内容在设备上是否可行?如果是这样,应用程序在 15 分钟后超时,我做错了什么?
很高兴提供更多细节,但我不想让这个已经很长的问题过多!
【问题讨论】:
【参考方案1】:当您的应用暂停时,无法获取实时活动更新。
如果您想跟踪用户的活动,例如步行、跑步等,请使用CMMotionActivityManager
。
运动数据反映用户在一段时间内是在步行、跑步、在车内还是静止不动。
根据Documentation:
应用程序暂停时不会传递更新,应用程序可以使用queryActivityStartingFromDate:toDate:toQueue:withHandler:
获取应用程序暂停时的活动。
因此,在后台跟踪用户活动的最佳方法是使用后台抓取,并将抓取间隔设置为最小。
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
【讨论】:
setMinimumBackgroundFetchInterval 和 UIApplication 是 iOS API。当应用程序在远离手机的手表上运行时,例如跑步或远足时,它们是不实用的。您如何仅使用 watchOS 进行后台获取,而不依赖手机?以上是关于我可以在后台收听 CMPedometer 并在不同情况下发送本地推送通知吗?的主要内容,如果未能解决你的问题,请参考以下文章