我想开发一款应用程序来检测用户的移动方式(步行,骑自行车,驾驶等......)并为每种活动类型发送特定的UILocalNotification
。
我的问题是:是否可以在后台检测到它(当应用程序完全关闭时)而不会耗尽设备的电池?最好的方法是什么?
谢谢!
答案 0 :(得分:2)
iPhone 5s中有协处理器m7(+)。 它使您可以获得设备运动 只是
import CoreMotion
在你的档案中。
创建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")
}
}
它会返回您的用户活动类型。
答案 1 :(得分:1)
关于可以在后台任务中处理的用户活动,以下一次没有提及(步行,骑自行车,驾驶等...)
实施长时间运行的后台任务
对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在iOS中,只允许特定的应用类型在后台运行:
答案 2 :(得分:1)
是的,可以这样做!
如果你的iOS应用程序必须保持监控位置,即使它位于 后台,使用标准位置服务并指定位置 UIBackgroundModes键的值继续在 背景和接收位置更新。 (在这种情况下,你 还应该确保位置经理的 pausesLocationUpdatesAutomatically属性设置为YES以提供帮助 节省电力。)可能需要此类型的应用程序示例 位置更新是健身或精细导航应用程序。
了解更多here。