Методы по работе с SDK

Отправка событий о показе экрана

Для ручной отправки события о просмотре экрана необходимо в контроллере вызвать следующий код
Swift
Objective-C
TrackerTop100.trackPageView(className: "SCREEN_CLASS", url: "URL", title: "TITLE");
[TrackerTop100 trackPageViewWithClassName: @"SCREEN_CLASS" url: @"URL" title: @"TITLE"];
SCREEN_CLASS (обязательный) — название активности, например, "MainActivity" URL (опциональный) — релевантный url для веб-страницы, например, "https://www.rambler.ru" TITLE (опциональный) — название экрана
Пример:
Swift
Objective-C
import TrackerTop100SDK
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
TrackerTop100.trackPageView(className: "MainViewController", url: "https://rambler.ru", title: "Главная страница")
}
}
@import TrackerTop100SDK;
@interface MainViewController ()
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
[TrackerTop100 trackPageViewWithClassName: @"MainViewController" url: @"https://rambler.ru" title: @"Главная страница"];
}
@end

Отправка собственных событий

При необходимости можно отправить любое собственное событие с помощью метода
Swift
Objective-C
TrackerTop100.trackEvent(eventName: "EVENT_NAME", customVars: EVENT_DATA);
[TrackerTop100 trackEventWithEventName: @"EVENT_NAME" eventValues: EVENT_DATA];
EVENT_NAME (обязательный) — произвольное название события
EVENT_DATA (опциональный) — произвольные данные о событии, не более 30 параметров в формате Dictionary<String, String>
Пример:
Swift
Objective-C
import TrackerTop100SDK
// ...
let eventName: String = "my_event"
let eventData: [String: String] = ["param_1": "value_1", "param_2": "value_2"]
TrackerTop100.trackEvent(eventName: eventName, eventValues: eventData)
NSString *eventName = @"my_event";
NSDictionary *eventValues = @{
@"param_1" : @"value_1",
@"param_2" : @"value_2"
};
[TrackerTop100 trackEventWithEventName: eventName eventValues: eventValues];

Передача данных электронной коммерции

Для передачи действий пользователя с ECommerce данными необходимо собрать и передать данные в событие в определенном формате <TrackerTop100ECommerce>:

Формат данных <TrackerTop100ECommerce>

Поле
Тип данных
Описание
currencyCode
String
Трехбуквенный код валюты по ISO 4217. Если передается иная валюта, будут отправлены нулевые значения вместо валюты и суммы.
action
Дополнительные данные, описывающие действие, произведённое с товаром или набором товаров. Данные передаются в виде объекта <TrackerTop100ECommAction>.
products
Список описаний товаров, с которыми было произведено указанное действие. Описание каждого из товаров представляет собой объект вида <TrackerTop100ECommProduct>.
impressions
Список описаний товаров, относящихся к действию impressions (показ товара или набора товаров). Данные передаются в виде объекта <TrackerTop100ECommProduct>.
promotions
Массив данных, описывающих связанное с рекламной акцией действие. Данные передаются в виде объекта <TrackerTop100ECommPromo>.

Отправка события ECommerce

Swift
Objective-C
TrackerTop100.trackEcomm(eventName: "EVENT_NAME", ecommParams: ECOMM_PARAMS)
[TrackerTop100 trackEcommWithEventName: @"EVENT_NAME" ecommParams: ECOMM_PARAMS];
EVENT_NAME (обязательный) — произвольное название события
ECOMM_PARAMS (опциональный) — ECommerce данные о событии, соответствующие формату <TrackerTop100ECommerce>

Примеры передачи ECommerce данных

Показ товара (impressions):
Swift
Objective-C
import TrackerTop100SDK
// ...
let product1 = TrackerTop100ECommProduct(
id: "25317",
name: "Майка",
list: "Результаты поиска",
brand: "Печки-лавочки",
category: "Одежда/Мужская одежда/Футболки",
position: "1",
price: "1499.00",
variant: "Зеленый цвет"
)
let product2 = TrackerTop100ECommProduct(
id: "25315",
name: "Футболка с рисунком",
list: "Результаты поиска",
brand: "Печки-лавочки",
category: "Одежда/Мужская одежда/Футболки",
position: "2",
price: "2345.50",
variant: "Серый цвет"
)
let ecommParams = TrackerTop100ECommerce(
currencyCode: "RUB",
impressions: [product1, product2]
)
TrackerTop100.trackEcomm(eventName: "impressions", ecommParams: ecommParams)
@import TrackerTop100SDK;
// ...
TrackerTop100ECommProduct *product1 = [[TrackerTop100ECommProduct alloc]
initWithId: @"25317"
name: @"Майка"
list: @"Результаты поиска"
brand: @"Печки-лавочки"
category: @"Одежда/Мужская одежда/Футболки"
coupon: nil
position: @"1"
price: @"1499.00"
quantity: nil
variant: @"Зеленый цвет"];
TrackerTop100ECommProduct *product2 = [[TrackerTop100ECommProduct alloc]
initWithId: @"25315"
name: @"Футболка с рисунком"
list: @"Результаты поиска"
brand: @"Печки-лавочки"
category: @"Одежда/Мужская одежда/Футболки"
coupon: nil
position: @"2"
price: @"2345.50"
quantity: nil
variant: @"Серый цвет"];
TrackerTop100ECommerce *ecommParams = [[TrackerTop100ECommerce alloc]
initWithCurrencyCode: @"RUB"
action: nil
products: nil
impressions: @[product1, product2]
promotions: nil];
[TrackerTop100 trackEcommWithEventName: @"impressions" ecommParams: ecommParams];
Клик по промо-акции:
Swift
Objective-C
import TrackerTop100SDK
// ...
let promo = TrackerTop100ECommPromo(
id: "P15432",
name: "Сезонная распродажа",
creative: "sale_banner1",
position: "slot_2"
)
let ecommParams = TrackerTop100ECommerce(
currencyCode: "RUB",
promotions: [promo]
)
TrackerTop100.trackEcomm(eventName: "promoClick", ecommParams: ecommParams)
@import TrackerTop100SDK;
// ...
TrackerTop100ECommPromo *promo = [[TrackerTop100ECommPromo alloc]
initWithId: @"P15432"
name: @"Сезонная распродажа"
creative: @"sale_banner1"
position: @"slot_2"];
TrackerTop100ECommerce *ecommParams = [[TrackerTop100ECommerce alloc]
initWithCurrencyCode:@"RUB"
action: nil
products: nil
impressions: nil
promotions: @[promo]];
[TrackerTop100 trackEcommWithEventName: @"promoClick" ecommParams: ecommParams];
Клик по товару:
Swift
Objective-C
import TrackerTop100SDK
// ...
let product1 = TrackerTop100ECommProduct(
id: "25317",
name: "Майка",
list: "Результаты поиска",
brand: "Печки-лавочки",
category: "Одежда/Мужская одежда/Футболки",
position: "1",
price: "1499.00",
variant: "Зеленый цвет"
)
let ecommParams = TrackerTop100ECommerce(
currencyCode: "RUB",
products: [product1]
)
TrackerTop100.trackEcomm(eventName: "click", ecommParams: ecommParams)
@import TrackerTop100SDK;
// ...
TrackerTop100ECommProduct *product1 = [[TrackerTop100ECommProduct alloc]
initWithId: @"25317"
name: @"Майка"
list: @"Результаты поиска"
brand: @"Печки-лавочки"
category: @"Одежда/Мужская одежда/Футболки"
coupon: nil
position: @"1"
price: @"1499.00"
quantity: nil
variant: @"Зеленый цвет"];
TrackerTop100ECommerce *ecommParams = [[TrackerTop100ECommerce alloc]
initWithCurrencyCode:@"RUB"
action: nil
products: @[product1]
impressions: nil
promotions: nil];
[TrackerTop100 trackEcommWithEventName: @"click" ecommParams: ecommParams];
Добавление товара в корзину:
Swift
Objective-C
import TrackerTop100SDK
// ...
let product1 = TrackerTop100ECommProduct(
id: "43521",
name: "Часы Citizen",
brand: "Печки-лавочки",
category: "Аксессуары/Часы",
price: "3654.32",
quantity: "5"
)
let ecommParams = TrackerTop100ECommerce(
currencyCode: "RUB",
products: [product1]
)
TrackerTop100.trackEcomm(eventName: "add", ecommParams: ecommParams)
@import TrackerTop100SDK;
// ...
TrackerTop100ECommProduct *product1 = [[TrackerTop100ECommProduct alloc]
initWithId: @"43521"
name: @"Часы Citizen"
list: nil
brand: @"Печки-лавочки"
category: @"Аксессуары/Часы"
coupon: nil
position: nil
price: @"3654.32"
quantity: @"5"
variant: nil];
TrackerTop100ECommerce *ecommParams = [[TrackerTop100ECommerce alloc]
initWithCurrencyCode:@"RUB"
action: nil
products: @[product1]
impressions: nil
promotions: nil];
[TrackerTop100 trackEcommWithEventName: @"add" ecommParams: ecommParams];
Покупка товаров:
Swift
Objective-C
import TrackerTop100SDK
// ...
let action = TrackerTop100ECommAction(
id: "b52314",
step: "2",
option: "Самовывоз"
)
let product1 = TrackerTop100ECommProduct(
id: "25317",
name: "Майка",
brand: "Печки-лавочки",
category: "Одежда/Мужская одежда/Футболки",
price: "1499.00",
variant: "Зеленый цвет"
)
let product2 = TrackerTop100ECommProduct(
id: "25315",
name: "Футболка с рисунком",
brand: "Печки-лавочки",
category: "Одежда/Мужская одежда/Футболки",
price: "2345.50",
variant: "Серый цвет"
)
let ecommParams = TrackerTop100ECommerce(
currencyCode: "RUB",
action: action,
products: [product1, product2]
)
TrackerTop100.trackEcomm(eventName: "purchase", ecommParams: ecommParams)
@import TrackerTop100SDK;
// ...
TrackerTop100ECommAction *action = [[TrackerTop100ECommAction alloc]
initWithId: @"b52314"
coupon: nil
revenue: nil
affilation: nil
tax: nil
shipping: nil
list: nil
step: @"2"
option: @"Самовывоз"];
TrackerTop100ECommProduct *product1 = [[TrackerTop100ECommProduct alloc]
initWithId: @"25317"
name: @"Майка"
list: @"Результаты поиска"
brand: @"Печки-лавочки"
category: @"Одежда/Мужская одежда/Футболки"
coupon: nil
position: @"1"
price: @"1499.00"
quantity: nil
variant: @"Зеленый цвет"];
TrackerTop100ECommProduct *product2 = [[TrackerTop100ECommProduct alloc]
initWithId: @"25315"
name: @"Футболка с рисунком"
list: @"Результаты поиска"
brand: @"Печки-лавочки"
category: @"Одежда/Мужская одежда/Футболки"
coupon: nil
position: @"2"
price: @"2345.50"
quantity: nil
variant: @"Серый цвет"];
TrackerTop100ECommerce *ecommParams = [[TrackerTop100ECommerce alloc]
initWithCurrencyCode:@"RUB"
action: action
products: nil
impressions: @[product1, product2]
promotions: nil];
[TrackerTop100 trackEcommWithEventName: @"purchase" ecommParams: ecommParams];

Передача данных в web view

Если есть необходимость связать события отправляемые из SDK и JS-счëтчика, то необходимо добавить следующий код:
Swift
Objective-C
import WebKit
import TrackerTop100SDK
class WebViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Добавляем script после того как html загрузится
let userScript = WKUserScript(
source: TrackerTop100.getDataToWebView(),
injectionTime: .atDocumentEnd,
forMainFrameOnly: true
)
// Устанавлваем скрипт в конфигурацию загрузки webview
let userContentController = WKUserContentController()
userContentController.addUserScript(userScript)
let configuration = WKWebViewConfiguration()
configuration.userContentController = userContentController
let webView = WKWebView(frame: view.bounds, configuration: configuration)
//...
}
}
#import "WebViewController.h"
@import TrackerTop100SDK;
@interface WebViewController ()
@end
@implementation WebViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Добавляем script после того как html загрузится
WKUserScript *userScript = [[WKUserScript alloc] initWithSource: [TrackerTop100 getDataToWebView] injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
// Устанавлваем скрипт в конфигурацию загрузки webview
WKUserContentController *userContentController = [[WKUserContentController alloc] init];
[userContentController addUserScript: userScript];
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.userContentController = userContentController;
WKWebView *webView = [[WKWebView alloc] initWithFrame: self.view.bounds configuration: configuration];
//...
}
@end