Внедрение маяка в iOS для Deployment Target 4.3

Мониторинг области маяка был представлен в iOS7. И у меня есть приложение с 4.3 в качестве цели развертывания. Мне нужно обновить приложение с учетом новых требований для мониторинга области маяка.

  1. Поддерживается ли xcode 4.6.
  2. Если я создам его в xcode 5, могу ли я установить цель развертывания на 4.3?

каковы другие способы, которыми я могу добиться этого.

Спасибо,


person Srivathsava K    schedule 28.01.2014    source источник


Ответы (3)


Если вы хотите реализовать мониторинг региона с помощью технологии Beacon, вам следует собрать приложение на xcode 5.0+, а целью развертывания должна быть ios7+. Но вы можете использовать xcode 4.6, но вы должны знать о добавлении base sdk as IOS7+.

См. этот справочный документ, который поддерживает маяк,

CLBeaconRegion доступен в IOS7, CLBeacon доступен в IOS7.

Примечание. В IOS ваш iphone также может выступать в качестве устройства-маяка (обычно маяком является внешнее устройство Bluetooth, см. эту ссылку) трансляция (рекламный маяк) через оборудование Bluetooth LE, которое доступно только в iPhone 4S, iPhone 5,5c,5s. iPad 4, iPad Mini, iPad Air и т. д. Поэтому, когда вы поддерживаете маяк, вы также должны отметить аппаратное обеспечение.

person Mani    schedule 28.01.2014

Инфраструктура Core Location обеспечивает два способа обнаружения входа и выхода пользователя из определенных регионов: мониторинг географического региона (iOS 4.0 и более поздних версий и OS X 10.8 и более поздних версий) и мониторинг маякового региона (iOS 7.0). и позже). Географический регион — это область, определяемая окружностью определенного радиуса вокруг известной точки на поверхности Земли. Напротив, область маяка — это область, определяемая близостью устройства к маякам Bluetooth с низким энергопотреблением. Сами маяки — это просто устройства, которые рекламируют конкретную полезную нагрузку Bluetooth с низким энергопотреблением — вы даже можете превратить свое устройство iOS в маяк с некоторой помощью инфраструктуры Core Bluetooth.

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html

person codercat    schedule 28.01.2014

Вы МОЖЕТЕ создавать приложения iBeacon, используя XCode 4.x для более старых версий iOS. Настройка немного сложна, и эти приложения могут использовать функции iBeacon только на телефонах с iOS7 или более поздней версии. Но он все еще может работать на более ранних версиях iOS.

Хитрость заключается в том, что вам сначала нужно создать двоичную оболочку вокруг API-интерфейсов iBeacon с помощью XCode 5. Этот код-оболочка должен запрашивать классы CoreLocation, чтобы узнать, существуют ли API-интерфейсы iBeacon, и корректно завершать работу, если их нет. Вам нужно только использовать XCode 5 для компиляции этого двоичного файла, затем вы добавляете его в свой проект XCode 4.x (вместе с вашим заголовочным файлом, чтобы исходный код мог получить доступ к интерфейсу класса).

Ниже приведен фрагмент кода из класса, который выполняет это для мониторинга iBeacons. Вам придется добавить дополнительные методы для ранжирования.

  typedef void(^RNDetermineStateCompletionHandler)(NSInteger state, CLRegion *region);

  - (id)init {
      self = [super init];
      if (self != nil) {
          _locationManager = [[CLLocationManager alloc] init];
          _locationManager.delegate = self;
      }
      return self;
  }

  - (BOOL)isIBeaconCapable {
      return [CLLocationManager isRangingAvailable];
  }

  - (void)setUUID:(NSString *)uuidStr {
          NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:uuidStr];
          NSLog(@"RNLocation Wrapper: Set UUID to %@", uuidStr);
          _beaconRegion = [[NSClassFromString(@"CLBeaconRegion") alloc] initWithProximityUUID:uuid identifier:@"my.region.identifier"];
  }

  - (void)monitorBeaconRangeWithHandler:(RNDetermineStateCompletionHandler)completionHandler {
      for (CLBeaconRegion *region in [_locationManager monitoredRegions]) {
          NSLog(@"Stopping monitoring on: %@ ", region.identifier);
          [_locationManager stopMonitoringForRegion:region];
      }

      _stateBlock = completionHandler;
      [_locationManager startMonitoringForRegion:_beaconRegion];
  }


  - (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {
      if (_stateBlock) {
          _stateBlock(state, region);
      }
  }
person davidgyoung    schedule 28.01.2014