2016-04-24 15 views
1

私は、ユーザーが車を運転している場合にポップアップメッセージを持つAppを開発しています。私はSOMotionDetectorライブラリを実装しました。このライブラリは素晴らしいですが、私はユーザーの場所を追跡したくないので、自分の場所を追跡する許可を求めるメッセージを表示したくないのは間違いありません。別の選択肢がありますか?iOS:GPSがないと、ユーザーが車両を運転しているかどうかを検出できますか?

ここに、私が追加したコードがありますが、それが役立つかどうかはわかりません。

[SOLocationManager sharedInstance].allowsBackgroundLocationUpdates = NO; 

[[SOMotionDetector sharedInstance] startDetection]; 

[SOMotionDetector sharedInstance].useM7IfAvailable = YES; //Use M7 chip if available, otherwise 

[SOMotionDetector sharedInstance].motionTypeChangedBlock = ^(SOMotionType motionType) { 
    switch (motionType) { 
     case MotionTypeNotMoving: 
      break; 
     case MotionTypeWalking: 
      break; 
     case MotionTypeRunning: 
      break; 
     case MotionTypeAutomotive:[self alertMessage]; 
      break; 
    } 
}; 
+0

私は 'automotive'モーションタイプをするために、GPSに依存していると信じています:ユーザー が速く20っぽいMPHよりも走行している場合は、私は ユーザーが車の中にあると仮定できました高速移動を判断しますが、ユーザーの所在地にアクセスしていないときに場所のアクセス許可を要求する必要はありません。これは、CoreMotionフレームワークで直接使用する場合です。私は 'SOMotionDetector'が何をしているのか分かりません。しかし、CoreMotionにはバックグラウンド通知がないので、バックグラウンドでモーションアップデートを受け取るには、サポートされているバックグラウンドモードの1つを利用する必要があります。位置更新は – Paulw11

+0

Hello @ Weakman10122です。ユーザーが車両を運転しているかどうかを検出する方法。これを実装した方法を教えてください。あなたのお返事をお待ちしております。 – ChanWarde

+0

@ChanWardeこのライブラリはhttps://github.com/SocialObjects-Software/SomotionDetectorを使用してください。それは私がそれを使用した最後にうまくいきました。 – Weakman10122

答えて

3

はい、可能です。

  1. ユーザーが運転している可能性があるかどうかの表示を取得するには、デバイス上でCore Motionを使用できます。 CoreMotion APIは、iOSの最高の をユーザの行動として推測しますが、それは100% という正確な保証はありません。 (たとえば列車に乗って を自動車に数えることができるかどうかはわかりません。異なるアクティビティタイプは ではありません)興味のあるアクティビティタイプの をアプリでチェックすることをおすすめしますそれらを除外しようとするよりもあなたが望んでいない 。
  2. 次の方法でユーザーの現在の速度を確認します。

    - (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. 
        } 
    
+0

アップルのサイトにある関連するCore Motion APIへのリンク:[CMMotionActivity Class Reference](https://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionActivity_class/index.html#//apple_ref/c/ tdef/CMMotionActivityConfidence) –

+0

これをバックグラウンドで取り出すことは可能でしょうか、または私のアプリが殺されたのでしょうか? – netshark1000

関連する問題