Skip to content
yabalaban edited this page Feb 6, 2014 · 3 revisions

Установка

Установить библиотеку можно при помощи CocoaPads. В Podfile добавьте:

pod 'EmpatikaBeacons'

Так же библиотеку можно установить вручную: 1. Добавить библиотеку sdk в проект. 2. Добавить в проекте линк на CoreLocation.framework, CoreBluetooth.framework.

Получение appID

На данный момент appID может являться произвольным значением, лишь бы не пустым. Об изменениях в логике будет сказано заранее.

Использование SDK

Объект класса RBDirectionTracker нужно запрашивать только через статический метод sharedInstance. В AppDelegate своего приложения добавьте ваш appID.

[[RBDirectionTracker sharedInstance] setAppID:@"UniqueAppID"];

Класс, в котором вы хотите подписаться на события, нужно реализовать делегат RBDirectionTrackerDelegate. Данный класс необходимо добавить в список делегатов класса RBDirectionTracker.

[[RBDirectionTracker sharedInstance] addDelegate:self];

В случае, если класс необходио убрать из списка, то можно воспользоваться другим методом.

[[RBDirectionTracker sharedInstance] removeDelegate:self];

Для запуска мониторинга (можно поместить во viewDidLoad основного viewController'a), нужно вызвать метод,

[[RBDirectionTracker sharedInstance] startMonitoring];

Если на момент запуска appID не указан, то будет брошено исключение @"IllegalAppID". Для остановки мониторинга нужно вызвать метод.

[[RBDirectionTracker sharedInstance] stopMonitoring];

RBDirectionTrackerDelegate

Все методы данного делегата являются опциональными.

- (void)determineState:(EBRegionState *)state forRegion:(RBRegion *)region;

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

Пример: когда пользователь запускает приложение и не находится в зоне действия бикона, то данный метод будет вызван с state == EBRegionStateOutside, в ином случае EBRegionStateInside.

- (void)enterRegion:(RBRegion *)region; 

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

- (void)exitRegion:(RBRegion *)region;

Вызывается, когда пользователь покидает регион. Отличие от первого метода аналогично предыдущему.

- (void)rangeBeacon:(RBBeacon *)beacon forRegion:(RBRegion *)region;

Вызывается, когда меняется состояние бикона, в зоне видимости которого находится пользователь в заданном регионе. Метод странно ведёт себя в бекграунде, а именно: вызывается, когда пользователь находится на локскрине. Возможно использование для пушей и других действий, но не рекомендуется.

- (void)bluetoothDidUpdateState:(CBCentralManagerState)state;

Вызывается тогда, когда bluetooth меняет своё состояние.

RBBeacon

Представляет собой сущность бикона.

@property NSNumber *major;	Мажорная версия бикона.
@property NSNumber *minor;  Минорная версия бикона.
@property CLProximity proximity; Расстояние между биконом и девайсом (4 состояния)
@property double accuracy; Примерное расстояние в метрах между биконом и девайсом 	

RBRegion

Представляет собой сущность региона

@property NSNumber *major; Мажорная версия региона
@property NSNumber *minor; Минорная версия региона
@property NSString *identifier; Идентификатор региона

EBRegionState

typedef NS_ENUM(NSInteger, EBRegionState) {
    EBRegionStateInside,
    EBRegionStateOutside,
    EBRegionStateUnknown
};