2014-09-19 3 views
0

Возможно ли инициировать веб-сервис и действовать в соответствии с его ответом при получении маякового сигнала в фоновом состоянии?Trigger a WebService, когда приложение iOS находится в фоновом состоянии

Я мог бы использовать для маяка в фоновом режиме, но перед отправкой локального уведомления я должен проверить с помощью веб-службы, следует ли уведомлять или нет. Может ли кто-нибудь предложить любой возможный способ сделать это. Вот код, как он выглядит сейчас.

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { 
     CLBeacon *beacon = [[CLBeacon alloc] init]; 
     beacon = [beacons lastObject]; 

     if (beacon.proximity == CLProximityUnknown) { 
      NSLog(@"Unknown"); 
     } 
     else if (beacon.proximity == CLProximityImmediate) { 
      NSLog(@"Immediate"); 
      //Here I should trigger a web-service with the beacon details to check whether to send local notification or not 
     } 
     else if (beacon.proximity == CLProximityNear) { 
      NSLog(@"Near"); 
      //Here I should trigger a web-service with the beacon details to check whether to send local notification or not 
     } 
     else if (beacon.proximity == CLProximityFar) { 
      NSLog(@"Far"); 
     } 
} 
+0

У вас есть около 10 секунд для выполнения задач, когда ваше приложение уведомляется в фоновом режиме. Это должно быть достаточно, чтобы запросить веб-службу и получить результат. – Paulw11

ответ

0

Вы можете быть только в фоновом режиме, если вы также настроили мониторинг. После того, как триггеры обратного вызова мониторинга (didEnterRegion или didExitRegion), ваше приложение начнет работать в фоновом режиме примерно на 10 секунд, прежде чем снова будет восстановлено. За это время вы получите диапазон обратных вызовов, если у вас установлен код, как показано.

Если ваш веб-сервис отвечает достаточно быстро, это сработает. Если сервер работает медленно или у вас плохое подключение, ответ может не вернуться за 10 секунд, и в этом случае уведомление никогда не появится.

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