是否有可能在背景中检测到用户的移动活动?

我想开发一个应用程序,检测用户的移动方式(步行,骑自行车,驾驶等),并为每个活动types发送特定的UILocalNotification

我的问题是:是否可以检测到背景(当应用程序完全closures),而不会耗尽设备的电池? 什么是最好的办法呢?

谢谢!

是的,这是可能的!

如果您的iOS应用程序即使在后台也必须保持监视位置,请使用标准位置服务并指定UIBackgroundModes键的位置值,以继续在后台运行并接收位置更新。 (在这种情况下,您还应该确保位置pipe理器的pausesLocationUpdatesAutomatically属性设置为YES,以帮助节省电量。)可能需要此类位置更新的应用的示例是健身或由转弯的导航应用。

在这里阅读更多。

iPhones上面有5个协处理器m7(+)。 它给你获得设备运动的可能性。
只需在您的文件中import CoreMotion
创build一个CMMotionActivityManager对象:
let motionActivityManager = CMMotionActivityManager()
检查您的设备是否可用:
motionActivityManager.isActivityAvailable()
比使用这种方法:
motionActivityManager.startActivityUpdates(to: OperationQueue.main) { (activity) in if (activity?.automotive)! { print("User using car") } if (activity?.cycling)! { print("User is cycling") } if (activity?.running)! { print("User is running") } if (activity?.walking)! { print("User is walking") } if (activity?.stationary)! { print("User is standing") } if (activity?.unknown)! { print("Unknown activity") } }
它会返回你的用户活动的types。

关于可以在后台任务中处理的用户活动,下面是一个没有提及的(步行,骑自行车,驾驶等…)

实施长期运行的后台任务

对于需要更多执行时间来执行的任务,您必须请求特定的权限才能在后台运行它们,而不会被暂停。 在iOS中,只有特定的应用程序types才能在后台运行:

  • 在后台播放可听内容的应用,例如音乐播放器应用
  • 在后台录制audio内容的应用程序。
  • 随时向用户通知其位置的应用程序,例如导航应用程序,支持networking电话(VoIP)的应用程序,
  • 需要定期下载和处理新内容的应用程序
  • 从外部附件获得定期更新的应用程序