##SwiftとiOSアプリとXcodeで歩いた歩数を取得する
個人的に作りたいアプリで、iOSのヘルスケアの歩数を取得するモジュールを作る必要があったので、作りました。
import UIKit
import CoreMotion
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
let pedometer:CMPedometer = CMPedometer()//プロパティでCMPedometerをインスタンス化。
//ここは、クラスのプロパティで宣言すること。getWalkのローカル変数で記述してしまって、コールバックが呼ばれるときにインスタンスが消えててエラーが発生してしばらく詰まりました。
@IBAction func getWalk(_ sender: Any) {
if(!CMPedometer.isStepCountingAvailable()) { //歩数が取得できるかどうかチェックしてます
print("cannot get stepcount")
}
let from = Date(timeIntervalSinceNow: -10000)//-10000は適当な数字です。適宜最適な数字に書き換えてください。
let to = Date()//現在を取得してます。
pedometer.queryPedometerData(from: from, to: to, withHandler: {(pedometerData, error) in
print("歩数は\(pedometerData!.numberOfSteps)")
print("距離は\(String(describing: pedometerData?.distance))") // 距離
print("登った回数\(String(describing: pedometerData?.floorsAscended))") // 上った回数
print("降った回数\(String(describing: pedometerData?.floorsDescended))")
})
}
}
getWalkっていうメソッドのネーミングがあんまりよろしくないんですが、ここはリファクタリングの必要ありです。
info.plistも書き換える必要があって、これらは他のドキュメントに載ってると思います。