2015-04-08 2 views
1

Я создал приложение с использованием маяков, и я настроил их UUID, Основные значения в самом приложении, и все работает нормально. И это также делает фоновый мониторинг.Как добавить маяки к приложению с сервера

После того, как приложение будет использовать маяк, приложение отправляет информацию маяка UUID, Major, Minor и Proximity Level на сервер, используя веб-службу, и в ответ он получает информацию о продукте, чтобы показать пользователю.

Но мой вопрос заключается в том, как добавить информацию маяка из веб-службы. Так что мне не нужно обновлять приложение в магазине приложений каждый раз, когда я добавляю новый маяк в хранилище.

Как можно осуществлять фоновый мониторинг, если детали маяка не находятся в приложении? И нужно ли нам каждый раз называть веб-сервис с информацией о маяках при открытии приложения?

Я не понимаю, как это достичь. Я новичок в функциональности маяка.

Это мой подарок код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    NSUUID *beaconUUID1 = [[NSUUID alloc] initWithUUIDString:@"B9407F30-F5F8-466E-AFF9-25556B57FE6D"]; 

    CLBeaconRegion *beaconRegion1 = [[CLBeaconRegion alloc] initWithProximityUUID:beaconUUID1 major:2 identifier:@"Identifier1"]; 
    CLBeaconRegion *beaconRegion2 = [[CLBeaconRegion alloc] initWithProximityUUID:beaconUUID1 major:3 identifier:@"Identifier2"]; 

    switch ([CLLocationManager authorizationStatus]) { 
     case kCLAuthorizationStatusAuthorizedAlways: 
      NSLog(@"Authorized Always"); 
      break; 
     case kCLAuthorizationStatusAuthorizedWhenInUse: 
      NSLog(@"Authorized when in use"); 
      break; 
     case kCLAuthorizationStatusDenied: 
      NSLog(@"Denied"); 
      break; 
     case kCLAuthorizationStatusNotDetermined: 
      NSLog(@"Not determined"); 
      break; 
     case kCLAuthorizationStatusRestricted: 
      NSLog(@"Restricted"); 
      break;   
     default: 
      break; 
    } 

    self.locationManager = [[CLLocationManager alloc] init]; 
    if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { 
     [self.locationManager requestAlwaysAuthorization]; 
    } 

    self.locationManager.delegate = self; 
    self.locationManager.pausesLocationUpdatesAutomatically = NO; 

    [self.locationManager startMonitoringForRegion:beaconRegion1]; 
    [self.locationManager startRangingBeaconsInRegion:beaconRegion1]; 

    [self.locationManager startMonitoringForRegion:beaconRegion2]; 
    [self.locationManager startRangingBeaconsInRegion:beaconRegion2]; 

    [self.locationManager startUpdatingLocation]; 

    CBCentralManager* testBluetooth = [[CBCentralManager alloc] initWithDelegate:nil queue: nil]; 

} 

Дополнительная информация: - Я использую Estimote маяки, но не их SDK. Я использую только Core Location Framework.

Может ли кто-нибудь дать четкое представление о том, как реализовать данные динамического маяка с сервера?

+2

загрузить информацию о маяках с сервера, а затем запустить мониторинг региона, когда вы закончите с загрузкой ... или что вы имеете в виду? – thorb65

+2

Вам не нужно делать это в методе 'didFinishLaunchingWithOptions', вы можете делать это там, где хотите. Таким образом, вы можете загрузить информацию о маяках и начать мониторинг, когда у вас есть все маяки. – redent84

+0

спасибо, ребята. я попробую ваши решения. Раньше я думал, что должен сделать это только в файле didFinishLaunchingWithOptions ... но теперь я напишу код в другом методе. –

ответ

3

Если вы хотите сделать это сами, вот основные шаги:

  1. Сделать асинхронный вызов веб-службы для извлечения информации о конфигурации сервера в didFinishLaunchingWithOptionsперед тем вы создали какой-либо контроль радиомаяка ,

  2. Когда вы получаете успешный обратный вызов из веб-службы, проанализируйте ответ, настройте свой CLBeaconRegions на основе того, что он возвращает, и начните мониторинг и ранжирование.

  3. (необязательно) Возможно, вы захотите реализовать постоянное хранилище (например, sharedPreferences) этих регионов и сохранить их после успешного вызова веб-службы. Таким образом, если вам не удается связаться с веб-службой, вы можете просто загрузить регионы обратно из постоянного хранилища и использовать последнюю известную копию.

Моя компания имеет продукт под названием ProximityKit, что делает все это для вас (и более), так что если вы заинтересованы в использовании рамки, это может быть проще, чем добавить собственные.

+0

Спасибо @davidgyoung ... за решение ... я попробую это. –

+0

Спасибо @davidgyoung. Он завоёван. –

+0

Почему бы не отправить push-уведомление приложения с сервера? – Shajo

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