2016-11-14 1 views
0

Я начал работать над существующим приложением и заметил, что время «быстро вперед», когда приложение было в фоновом режиме в течение длительного времени. Я закрыл его (пример) 09:30 минут, когда я открыл его в 14:21, он выполнил всю работу, но только , затем, он начинает обновление пользовательского интерфейса. Через несколько секунд он проходит через все данные с пяти минут в фоновом режиме.Потоки данных после открытия приложения с iOS/Obj-c

Это не приемлемое поведение для моего приложения, так это то, что я сделал:

  • Добавлена ​​фоновый режим (место) для моих возможностей
  • Конечно, я связанное 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 с образцом кода для менеджера местоположений.

Смежные вопросы