【问题标题】:Can I listen to CMPedometer in the background and send a local push notification upon different conditions?我可以在后台收听 CMPedometer 并在不同情况下发送本地推送通知吗?
【发布时间】:2015-01-21 16:21:59
【问题描述】:

这是一个 iOS 问题。

我想做的是在应用处于后台时收听内置计步器 (CMPedometer)。当计步器活动发生变化时(从“步行”到“跑步”再到“不动”等),我希望可以选择向用户的设备发送本地推送通知。

例如,应用程序位于后台。当我开始搬家时,我会收到一条推送通知,上面写着“你要搬家了!”当我停止移动时,我会收到一条推送通知,上面写着“你已经停止移动了!”

目前,我已经为我的后台模式设置了“位置更新”。该应用程序将在后台运行大约 15 分钟并跟踪位置并执行我想要的操作(当计步器数据更改时触发推送通知)。但 15 分钟后,它完全停止了。

我所描述的内容在设备上是否可行?如果是这样,应用程序在 15 分钟后超时,我做错了什么?

很高兴提供更多细节,但我不想让这个已经很长的问题过多!

【问题讨论】:

    标签: ios ios8 push-notification apple-push-notifications background-process


    【解决方案1】:

    当您的应用暂停时,无法获取实时活动更新。

    如果您想跟踪用户的活动,例如步行、跑步等,请使用CMMotionActivityManager

    运动数据反映用户在一段时间内是在步行、跑步、在车内还是静止不动。

    根据Documentation

    应用程序暂停时不会传递更新,应用程序可以使用queryActivityStartingFromDate:toDate:toQueue:withHandler: 获取应用程序暂停时的活动。

    因此,在后台跟踪用户活动的最佳方法是使用后台抓取,并将抓取间隔设置为最小。

    UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
    

    【讨论】:

    • setMinimumBackgroundFetchInterval 和 UIApplication 是 iOS API。当应用程序在远离手机的手表上运行时,例如跑步或远足时,它们是不实用的。您如何仅使用 watchOS 进行后台获取,而不依赖手机?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2013-01-14
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多