УВЕДОМЛЕНИЕ. Этот вопрос был первоначально опубликован до того, как Apple представила аппаратные средства обнаружения движения и связанные с ними API в SDK iOS. Однако ответы на этот вопрос остаются актуальными.
Я создаю приложение iOS для iPhone, которое включает в себя отслеживание работы пользователя и/или ходьбы. Очень важно, чтобы записанные результаты пользователей выполнялись и проходили честно. Мне нужен способ поймать пользователя, который может обманывать (или случайно оставил трекер) при использовании автомобиля.
Чтобы проверить, водит ли пользователь или ездит в машине, я сначала подумал об этих двух проверках, однако ни один из них не может определить, находится ли пользователь в машине или нет (до точки).
-
Проверьте текущую скорость пользователя следующим образом. Если пользователь путешествует быстрее, чем 20-ий MPH, я могу предположить, что пользователь находится в машине:
- (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.
Однако я не уверен, что это действительно хорошая проверка, потому что люди были записаны, чтобы перейти быстрее, чем раньше. Это хорошая проверка или я должен использовать что-то еще?
-
Определите, как быстро пользователь ускоряется с помощью Accelerometer и Motion API, предоставляемых Core Motion Framework. Если пользователь ускоряется с определенной скоростью, я могу предположить, что пользователь путешествует в автомобиле.
Правильны ли эти предположения? Я думаю, мой реальный вопрос: Есть ли лучший способ определить, движется ли пользователь в транспортном средстве - если да, то как?. А если нет, то подходят ли эти проверки для этого случая или это будет просто раздражать некоторых пользователей, которые на самом деле так быстро? Является ли CoreMotion подходящим API для этого?
EDIT: новый сопроцессор iPhones 5S M7 обеспечивает более точное обнаружение движения. Может ли кто-нибудь объяснить, как использовать новые API M7?