私はやや奇妙な実装をしています。私のアプリケーションはGPSデータを継続的に使用しており、それを使用していくつかのタスクを実行する必要があります。また、デバイスが静止しているか移動しているかを検出するために、加速度計を実装しました。デバイスが静止しているときは、を呼び出してGPSフェッチを停止stopUpdatingLocation
し、デバイスが移動しているときはを呼び出しますstartUpdatingLocation
。これは、フォアグラウンドとバックグラウンドの両方で正常に機能します。
ただし、デバイスの再起動時にアプリケーションをバックグラウンドで起動したいのですが。これは正常に機能します。plistに「voip」キーを追加し、applicationDidFinishLaunch
GPSフェッチコードを開始し、加速度計を開始しました。
stopUpdatingLocation
しかし、デバイスが静止状態に保たれると( )、加速度計が呼び出されないことがわかりました。そのため、デバイスの動きを検出できません。加速度計のコールバックが呼び出されていません。これが私が使用しているコードのサンプルです:
mMotionManager = [[CMMotionManager alloc] init];
if (mMotionManager.accelerometerAvailable) {
mMotionManager.accelerometerUpdateInterval = 1.0/10.0;
mOperationQueue = [[NSOperationQueue alloc] init];
[mMotionManager startAccelerometerUpdatesToQueue:mOperationQueue withHandler:^(CMAccelerometerData *data, NSError *error){
dispatch_async(dispatch_get_main_queue(), ^{
//[self onDeviceMotion];
[mAccelerometerReadings addObject: data];
[self updateViewsWithFilteredAcceleration:data.acceleration];
});
}];
誰かが私がこれを解決するのを手伝ってもらえますか?出来ますか?