Skip to end of metadata
Go to start of metadata

Подготовка

Загрузите свежую версию SDK из репозитория: https://github.com/rees46/rees46_ios_sdk

Перед началом работы необходимо подключить к проекту BunchSDK. Фреймворк лежит в папке с SDK.

Важно

Версия фреймворка BunchSDK libBunchBeaconSDK.a поставляется в двух вариантах: для устройств и для симулятора. В репозитории лежит версия для устройства. Если вам необходимо тестировать приложение в симуляторе, распакуйте архив bunch_sdk_devise_and_simulator.zip и используйте соответствующую версию. При публикации приложения в AppStore не забудьте вернуть версию для устройства.

Инициализация

Объект RBManager инициализируем методом: 

[[RBManager sharedInstance] setupWithShopIdentifer:(NSString*)shopIdentifier major:(int)major leadMinor:(int)leadMinor conversionMinor:(int)conversionMinor]
  • shopIdentifier – идентификационный номер магазина в REES46
  • major – значение параметра major группы трекаемых маячков
  • leadMinor – значение параметра minor маяка типа lead 
  • conversionMinor – значение параметра minor маяка типа conversion

Любой маяк обязательно имеет два параметра: major и minor, представленные целыми числами. Несколько маяков могут иметь один и тот же major, если есть необходимость объединить их в логическую группу. Параметр minor уникален для каждого маяка. RBManager отслеживает группу из двух маяков, один из которых имеет тип lead, а другой - conversion. Оба маяка имеют один major (например, 1). minor у каждого маяка свой (например, 1 для lead и 2 для conversion). Конкретные значения major и minor выдаются менеджером REES46 по запросу. 

Трекинг поведения пользователей

 

RBManager позволяет отслеживать события типов «view», «cart» и «purchase».

 

Соответствующий метод:

 

-(void)triggerEventWithType:(RBEventType)eventType informationDictionary:(NSDictionary*)infDict;

 

eventType может принимает значения RBEventTypeViewRBEventTypeCart и RBEventTypePurchase в зависимости от типа передаваемого события

 

Список значений, передаваемых в informationDictionary, зависит от типа события. 

 

Для view и cart:

 

{
	@"itemId" : itemId,
	@"itemCost" : itemCost,
	@"categories" : categories
}

 

Где:

 

  • itemId – id товара в магазине;
  • itemCost – стоимость товара (NSString, NSNumber или double);
  • categories – массив, содержащий категории, к которым относится товар. Например, [1, 31, 2].

 

Для purchase:

 

{
	@"itemIds" : @[itemId1, itemdId2, ...],
	@"itemCost" : @[itemCost1, itemCost2, ...],
	@"categories" : @[@[...], @[...], ...],
	@"itemQuantities" : @[itemQuantity1, itemdQuantity2, ...],
 	@"orderId" : orderId
}

 

Где:

 

  • itemIds – массив id товаров в магазине;
  • itemCosts – массив стоимостей товаров (NSString, NSNumber или double);
  • categories – массив, содержащий массивы с категориями, к которым относится каждый конкретный товар. Например,@ [ @[1, 31, 2], @[5, 3, 8] ];
  • itemQuantities – массив с количеством экземпляров каждого конкретного товара (NSString, NSNumber или int). Например @ [1,5,10];
  • orderId – номер заказа (NSString).

 

Важно

Перед вызовом метода startBunchManager можно инициализировать свойство userInformation класса RBManager, но не обязательно. Трекинг событий можно проводить и для анонимного пользователя.

  

[[RBManager sharedInstance] setUserInformation:someDictionary];

 

someDictionary должен иметь следующий вид:

 

{
	@"id": userId,
	@"email": userEmail
}

 

Где:

 

  • id – идентификатор пользователя/покупателя;
  • email – адрес электронной почты пользователя/покупателя.

 

Для этой цели можно также использовать метод getUserInformationWithURL:(NSString*)url. Полученный JSON объект (должен содержать поля id и email), сохраняется   в свойство userInformation объекта RBManager.


Отправка уведомлений пользователю

-(void)startBunchManager; // RBManager начинает мониторинг маячков
-(void)stopBunchManager; // Мониторинг прекращается

На запрос класса к серверу за информацией об акции, тот должен возвращать JSON вида: 

{
	image: "http://some_url/some_picture.png",
	title: "some_title",
	description: "some_description",
	deal_id: "1"
}

В AppDelegate добавляем следующее: 

#import "RBManager.h"
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
	[[RBManager sharedInstance] processIncomingNotification:notification];   
}

По получении пользователям оповещения об акции, в приложении открывается отдельный контроллер с информацией о ней. Можно кастомизировать вид кнопки «Назад» и заголовок контроллера следующим образом:

[[RBManager sharedInstance] setRbControllerBarTitle:@"SomeTitle"];
[[RBManager sharedInstance] setRbControllerBackButton:someButton]; // Принимает объект класса UIBarButtonItem

В противном случае будут использоваться дефолтные значения.

В общем случае подключение к приложению RBManager будет происходить следующим образом:

self.rbManager = [[RBManager sharedInstance] setupWithShopIdentifer:shopIdentifier major:major leadMinor:leadMinor conversionMinor:conversionMinor];


[[RBManager sharedManager] getUserInformationWithURL:urlStringWithUserInformation]; //Если необходимо


/* Необязательный блок
[[RBManager sharedManager] setRbControllerBarTitle:@"SomeTitle"];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
backButton.image = [UIImage imageNamed:@"someImageName"];
[[RBManager sharedManager] setRbControllerBackButton:backButton];
*/


[[RBManager sharedInstance] startBunchManager];

 

Инициализацию лучше всего проводить в application:didFinishLaunchingWithOptions: класса AppDelegate.


  • No labels