Документация
Интеграция SDK

Операции

Данные операции позволяют настроить работу библиотеки и отправлять события по желанию разработчика.

Запуск процесса сбора статистики

Чтобы запустить процесс сбора статистики непосредственно из кода приложения, передайте в метод YMMYandexMetrica.activate(withApiKey apiKey: String) значение параметра apiKey.

override class func initialize() {
    if self === MMSAppDelegate.self {
        YMMYandexMetrica.activate(withApiKey: "API_key
[no-highlight[

API key — это уникальный идентификатор приложения, который выдается в веб-интерфейсе AppMetrica при добавлении приложения.

]no-highlight]
") } }

Инициализация библиотеки с расширенной конфигурацией

Данный способ инициализации позволяет задать параметры для отслеживания предустановленных приложений, а также передать другие параметры с помощью методов класса YMMYandexMetrica (например, отслеживание активности пользователей). Параметры расширенной конфигурации применяются с момента инициализации библиотеки. Параметры, заданные с помощью методов класса YMMYandexMetrica могут применяться с некоторой задержкой.

let configuration = YMMYandexMetricaConfiguration.init(apiKey: "API_key
[no-highlight[

API key — это уникальный идентификатор приложения, который выдается в веб-интерфейсе AppMetrica при добавлении приложения.

]no-highlight]
") //Задание необходимых параметров ... //Инициализация AppMetrica SDK YMMYandexMetrica.activate(with: configuration)

Подробно о методах расширенной конфигурации

Установка версии приложения

По умолчанию версия приложения задается в файле настроек приложения Info.plist (CFBundleShortVersionString). Если необходимо установить версию приложения непосредственно из кода приложения, передайте в метод YMMYandexMetrica.setCustomAppVersion(_ appVersion: String) версию приложения.

YMMYandexMetrica.setCustomAppVersion("1.13.2")

где 1.13.2 — версия приложения.

Включение/отключение логирования

По умолчанию логирование не ведется. Чтобы включить логирование, используйте метод YMMYandexMetrica.setLoggingEnabled(_ isEnabled: Bool).

Отслеживание аварийных остановок приложения

По умолчанию отчеты об аварийных остановках приложения отправляются.

Чтобы отключить отправку отчетов, используйте метод YMMYandexMetrica.setReportCrashesEnabled(_ enabled: Bool).

YMMYandexMetrica.setReportCrashesEnabled(false)

Отправка местоположения устройства библиотекой

Если отправка включена и местоположение устанавливается с помощью метода setLocation, то будут использоваться указанные данные. Если отправка включена и метод setLocation не используется, но приложение имеет разрешение на получение локации у системы — локация будет собираться с помощью CLLocationManager.

Чтобы отключить автоматическое определение местоположения, используйте метод YMMYandexMetrica.setTrackLocationEnabled(_ enabled: Bool).

YMMYandexMetrica.setTrackLocationEnabled(false)

Установка местоположения устройства вручную

Если необходимо отправить собственные данные о местоположении устройства используйте метод YMMYandexMetrica.setLocation(_ location: CLLocation?).

func locationManager(_ manager: CLLocationManager,
  didUpdateLocations locations: [CLLocation]) {
  YMMYandexMetrica.setLocation(locations.last)
}

При этом разрешите определение местоположения с помощью метода setTrackLocationEnabled, указав в нем true.

YMMYandexMetrica.setTrackLocationEnabled(true)

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

Отправка сообщения о событии

Чтобы отправить произвольное сообщение о событии, передайте в метод YMMYandexMetrica.reportEvent(_ message: String, onFailure: (@escaping (Error?) -> Swift.Void)? = nil) краткое имя или описание события (message) и блок, в который передается ошибка (onFailure).

Если вы не хотите отслеживать ошибку, то передайте в качестве блока nil.

YMMYandexMetrica.reportEvent(message) { (error) in
    print("DID FAIL REPORT EVENT: %@", message)
    print("REPORT ERROR: %@", error?.localizedDescription)
}

Отправка сообщения о событии, включая дополнительные параметры

Чтобы отправить произвольное сообщение о событии, передайте в метод YMMYandexMetrica.reportEvent(_ message: String, parameters params: [AnyHashable : Any]?, onFailure: (@escaping (Error?) -> Swift.Void)? = nil) краткое имя или описание события (message), пары ключ-значение (params) и блок, в который передается ошибка (onFailure).

Если вы не хотите отслеживать ошибку, то передайте в качестве блока значение nil.

let params = ["key1": "value1", "key2": "value2"]
YMMYandexMetrica.reportEvent(message, parameters: params) { (error) in
    print("DID FAIL REPORT EVENT: %@", message)
    print("REPORT ERROR: %@", error?.localizedDescription)
}

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

Отправка сообщения об ошибке

Чтобы отправить произвольное сообщение об ошибке, передайте в метод YMMYandexMetrica.reportError(_ message: String, exception: NSException?, onFailure: (@escaping (Error?) -> Swift.Void)? = nil) параметры:

  • message — краткое имя или описание ошибки;
  • exception — объект типа NSException, который требуется передать на сервер. Этот параметр может принимать значение nil;
  • onFailure — блок, в который передается ошибка. Он может принимать значение nil.
do {
    try self.doWork();
} catch let exception as NSException {
    YMMYandexMetrica.reportError(message, exception: exception) { (error) in
        print("DID FAIL REPORT EXCEPTION: %@", exception.description)
        print("REPORT ERROR: %@", error?.localizedDescription)
    }
}

Задание длительности тайм-аута сессии

По умолчанию сессия заканчивается, если активность приложения отсутствует в течение 10 секунд. Чтобы изменить лимит времени, в которое приложение считается неактивным, передайте в метод YMMYandexMetrica.setSessionTimeout(_ sessionTimeoutSeconds: UInt) продолжительность сессии в секундах.

Минимально допустимое значение параметра sessionTimeoutSeconds составляет 10 секунд. При задании значения меньше 10, значение автоматически будет соответствовать 10 секундам.

YMMYandexMetrica.setSessionTimeout(15)

Отслеживание открытий приложения с помощью deeplink

Чтобы отслеживать открытия приложения с помощью deeplink, необходимо в UIApplicationDelegate добавить следующие изменения:

func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
    YMMYandexMetrica.handleOpen(url)
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    YMMYandexMetrica.handleOpen(url)
}

Учет новых пользователей

Если вы подключаете AppMetrica SDK к приложению, у которого уже есть активные пользователи, вы можете настроить учет новых пользователей. Для настройки необходимо инициализировать AppMetrica SDK, используя расширенную конфигурацию YMMYandexMetricaConfiguration:

override class func initialize()
{
    if self === AppDelegate.self {
        // Создание объекта конфигурации
        let configuration = YMMYandexMetricaConfiguration.init(apiKey: "API_KEY")
        // Реализуйте логику определения того, является ли запуск приложения первым. В качестве критерия вы можете использовать проверку наличия каких-то файлов (настроек, баз данных и др.), которые приложение создает в свой первый запуск
        let isFirstApplicationLaunch = false
        // Передайте значение true, если не хотите, чтобы данный пользователь засчитывался как новый
        configuration.handleFirstActivationAsUpdateEnabled
[no-highlight[

Описание

Позволяет сообщить о том, что первый запуск приложения с AppMetrica SDK следует трактовать как первый запуск обновленной версии приложения, а не как самый первый запуск приложения в его истории

Примечание. После активации параметра все последующие установки приложения будут определены AppMetrica как обновления приложения. Данные установки не будут отображены в отчетах как установки а также не будут атрибутированы партнерам.

]no-highlight]
= isFirstApplicationLaunch == false // Инициализация AppMetrica SDK YMMYandexMetrica.activate(with: configuration!) } }