注意: この質問は、Apple がモーション検出ハードウェアと関連する API を iOS SDK に導入する前に最初に投稿されました。ただし、この質問への回答は依然として関連性があります。
ユーザーのランニングやウォーキングを追跡する iPhone iOS アプリを作成しています。ユーザーのランニングとウォーキングの記録された結果が正直であることは非常に重要です。車を使用しているときに不正行為をしている可能性がある (または誤ってトラッカーをオンにしたままにしている) ユーザーを捕まえる方法が必要です。
ユーザーが車を運転しているか、車に乗っているかを確認するために、最初にこれら 2 つのチェックを考えましたが、どちらもユーザーが車に乗っているかどうかを (ある程度) 判断することはできません。
次の方法でユーザーの現在の速度を確認します。ユーザーが時速 20 マイルよりも速く移動している場合、ユーザーは車に乗っていると推測できます。
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *recentLocation = [locations lastObject]; recentLocation.speed; //If speed is over 20 MPH, assume the user is not on their feet.
ただし、これが本当に良いチェックかどうかはわかりません。以前よりも速く走る人が記録されているからです。これは良いチェックですか、それとも他のものを使用する必要がありますか?
Core Motion Frameworkで提供される Accelerometer および Motion API を使用して、ユーザーが加速している速度を判断します。ユーザーが特定の速度を超えて加速する場合、ユーザーは車で移動していると推測できます。
これらの仮定は正しいですか?私の本当の質問はこれだと思います:ユーザーが車で移動しているかどうかを検出するより良い方法はありますか?もしそうなら、どのように? . そうでない場合、これらのチェックはこのケースに適していますか、それとも実際にはそれほど高速な一部のユーザーにとっては迷惑でしょうか? CoreMotion はこれを行うのに適切な API ですか?
編集: 新しい iPhone 5S M7 コプロセッサは、より正確な動き検出を提供します。新しい M7 API の使用方法を説明できる人はいますか?