Swift 在后台检测运动 activity
Swift detect motion activity in background
我想在应用暂停(而不是停止)时检测运动 activity。
我使用了这段代码,如果用户使用 app:
它就可以工作
let isActivityAvailable = CMMotionActivityManager.isActivityAvailable()
if isActivityAvailable {
CMMotionActivityManager().startActivityUpdates(to: OperationQueue.main) { (motionActivity) in
if (motionActivity!.confidence.rawValue > 0) {
if (motionActivity?.walking)! {
print("User is walking")
}
}
}
}
应用程序可以处于多种状态:
- 运行 在前台
- 运行 在后台(主动执行后台任务)
- 已挂起(仍在内存中但未获得处理器时间。)
- 终止。暂停的应用程序可以在没有警告的情况下随时终止。
只有前 2 个州会收到动态更新。引用文档:
...updates are not delivered while your app is suspended.
当用户将应用换出或锁定其 phone 时,应用仅在状态 2(运行 在后台)停留几秒钟,除非您要求后台时间。除了音乐播放器和 turn-by-turn 导航应用等一小部分应用类型外,后台时间被限制为很短的间隔(3 分钟?)。
由于这些原因,简短的回答是否定的,当您的应用 "is pause" 因为暂停变为暂停时,您无法接收动态更新。
为了您自己的使用(或者可能是企业内部使用),您可以将应用设置为音乐播放器并让它持续接收动态更新,但这样的应用会在应用商店审核中被拒绝。
我想在应用暂停(而不是停止)时检测运动 activity。 我使用了这段代码,如果用户使用 app:
它就可以工作let isActivityAvailable = CMMotionActivityManager.isActivityAvailable()
if isActivityAvailable {
CMMotionActivityManager().startActivityUpdates(to: OperationQueue.main) { (motionActivity) in
if (motionActivity!.confidence.rawValue > 0) {
if (motionActivity?.walking)! {
print("User is walking")
}
}
}
}
应用程序可以处于多种状态:
- 运行 在前台
- 运行 在后台(主动执行后台任务)
- 已挂起(仍在内存中但未获得处理器时间。)
- 终止。暂停的应用程序可以在没有警告的情况下随时终止。
只有前 2 个州会收到动态更新。引用文档:
...updates are not delivered while your app is suspended.
当用户将应用换出或锁定其 phone 时,应用仅在状态 2(运行 在后台)停留几秒钟,除非您要求后台时间。除了音乐播放器和 turn-by-turn 导航应用等一小部分应用类型外,后台时间被限制为很短的间隔(3 分钟?)。
由于这些原因,简短的回答是否定的,当您的应用 "is pause" 因为暂停变为暂停时,您无法接收动态更新。
为了您自己的使用(或者可能是企业内部使用),您可以将应用设置为音乐播放器并让它持续接收动态更新,但这样的应用会在应用商店审核中被拒绝。