是否可以在后台检测用户的移动活动?

时间:2016-10-25 11:20:25

标签: ios objective-c swift algorithm cocoa-touch

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

我的问题是:是否可以在后台检测到它(当应用程序完全关闭时)而不会耗尽设备的电池?最好的方法是什么?

谢谢!

3 个答案:

答案 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中,只允许特定的应用类型在后台运行:

  • 在后台播放用户可听内容的应用, 例如音乐播放器应用
  • 在后台录制音频内容的应用。
  • 随时向用户通知其位置的应用,例如 导航应用程序支持互联网协议语音的应用程序 (VoIP)的
  • 需要定期下载和处理新内容的应用
  • 从外部附件接收定期更新的应用

答案 2 :(得分:1)

是的,可以这样做!

  

如果你的iOS应用程序必须保持监控位置,即使它位于   后台,使用标准位置服务并指定位置   UIBackgroundModes键的值继续在   背景和接收位置更新。 (在这种情况下,你   还应该确保位置经理的   pausesLocationUpdatesAutomatically属性设置为YES以提供帮助   节省电力。)可能需要此类型的应用程序示例   位置更新是健身或精细导航应用程序。

了解更多here