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

FS.*_*.O6 4 algorithm cocoa-touch objective-c ios swift

我想开发一个应用程序来检测用户的移动方式(步行、骑自行车、开车等)并UILocalNotification为每种活动类型发送一个特定的信息。

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

谢谢!

Myk*_*huk 5

iPhone 上 5s 中有协处理器 m7​​(+)。它使您有可能获得设备运动。
只是

import CoreMotion 
Run Code Online (Sandbox Code Playgroud)

在您的文件中。

创建一个 CMMotionActivityManager 对象:

let motionActivityManager = CMMotionActivityManager()  
Run Code Online (Sandbox Code Playgroud)

检查它是否在您的设备上可用:
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")
        }
    }  
Run Code Online (Sandbox Code Playgroud)

它会返回您的用户活动类型。

  • 但它在背景上效果好吗?不会过度消耗电池电量? (2认同)
  • @MykytaSavchuk@Ravi Ojha:请仔细阅读问题。问题与后台模式有关,并且您给出的答案无关。如果您知道如何在后台模式下获得运动并更新您的答案,请告诉我们。谢谢...!! (2认同)