2016-11-14 3 views
0

私は既存のアプリケーションの作業を開始し、アプリがバックグラウンドで長時間働いていたときに「早送り」することに気付きました。私はそれをシャットダウンした(例)09:30、私はそれをすべての仕事をしたが、それから UIを更新し始めた。数秒で、バックグラウンドで5分間のデータをすべて競い合います。iOS/Obj-cでアプリケーションを開いた後にデータが流れ込む

この私のアプリのための許容動作ではありませんので、これは私がやっていることです:

  • 追加バックグラウンドモード(場所)もちろん、私の能力
  • へのI /ジャイロを使用するようにCoreMotionをリンク加速度計。

    self.motionManager = [[CMMotionManager alloc] init]; 
    
    //Gyroscope 
    if([self.motionManager isGyroAvailable]) 
    { 
        // Start the gyroscope if it is not active already 
        if([self.motionManager isGyroActive] == NO) 
        { 
         // Update us 2 times a second 
         // [self.motionManager setGyroUpdateInterval:1.0f/1.0f]; 
    
         [_motionManager setAccelerometerUpdateInterval:0.1]; 
         [self.motionManager 
         startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] 
         withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { 
          if(error){ 
    
           NSLog(@"%@", error); 
          } 
          else { 
           //NSString *x = [[NSString alloc] initWithFormat:@"%.02f",accelerometerData.acceleration.x]; 
    
           float g = 9.80665f; 
           float AccelX = accelerometerData.acceleration.x * g; 
           float Accely = accelerometerData.acceleration.y * g; 
           float Accelz = accelerometerData.acceleration.z * g; 
    
           [self getSicknessIndicator:AccelX ay:Accely az:Accelz]; 
          } 
         }]; 
    
         //Receive the gyroscope data on this block 
    
    
        } 
    } 
    

私はこの行動がなぜ起こるか非常にわからないと私はまた、残念ながら、StackOverflowの上ではなく、結果なしで他の質問の多くを試してみました。彼らは主にバックグラウンドモードを追加するように指示します。

答えて

0

バックグラウンドモード(場所)を有効にした後、ロケーションマネージャをセットアップしてからstartUpdatingLocationに電話する必要があります。ただし、ロケーションマネージャがロケーションアップデートを受信できる限り、アプリはすべてのデバイスモーションアップデートリアルタイムで(電話がロックされている場合でも)。

ここにApple guideへのリンクです。

ロケーションマネージャのサンプルコードを持つanswerへのリンクです。

関連する問題