Подключение и инициализация

AppMetrica Xamarin — это плагин для использования возможностей AppMetrica, если вы разрабатываете приложения с помощью Xamarin под Android и iOS.

Ниже представлена общая схема использования плагина:

Плагин предоставляется в виде проектов, которые содержат следующие библиотеки:

Подключение AppMetrica в проект

Чтобы интегрировать AppMetrica в ваш проект необходимо:

  1. Загрузить и подключить библиотеки плагина. Это можно сделать несколькими способами:

    • Подключить проекты YandexMetrica.Xamarin.PCL, YandexMetrica.Xamarin.iOSBinding и YandexMetrica.Xamarin.AndroidBinding.

    • Собрать и подключить библиотеки из проектов. После сборки библиотеки будут доступны в каталогах:

      • YandexMetrica.Xamarin.PCL/bin/(Debug|Release)/YandexMetrica.Xamarin.PCL.dll;
      • YandexMetrica.Xamarin.iOSBinding/bin/(Debug|Release)/YandexMetrica.Xamarin.iOS.dll;
      • YandexMetrica.Xamarin.AndroidBinding/bin/(Debug|Release)/YandexMetrica.Xamarin.Android.dll.
  2. Инициализировать библиотеку AppMetrica с помощью метода Activate() класса YandexMetricaImplementation. Данный метод также производит регистрацию реализации интерфейса IYandexMetrica.

    public static void Activate(Context context, YandexMetricaConfig config, Application app = null) {...}
    Параметр Значение по умолчанию Описание
    config

    Расширенная стартовая конфигурация. Для ее создания необходимо передать apiKey: YandexMetricaConfig(string apiKey)

    app null

    Позволяет включить/отключить автоматическое отслеживание жизненного цикла приложения. По умолчанию отслеживание отключено.

    Если параметр принимает значение null, для корректного отображения сессий используйте методы OnPause() и OnResume() класса YandexMetricaImplementation в соответствующих частях проекта

    Что такое API key?

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

    Убедитесь, что он указан верно.

Примеры подключения

Ниже представлены примеры работы с демонстрационными проектами.

Подключается библиотека YandexMetricaPCL. Работа с AppMetrica производится через класс YandexMetrica.Implementation.

using System;
using YandexMetricaPCL;
using System.Collections.Generic;

namespace Metrica.Xamarin.CrossPlatform
{
    public class SharedLogic
    {
        public static void LogClick(int clickNumber)
        {
            var dict = new Dictionary<string, string>{ { "click", clickNumber.ToString() } };
            YandexMetrica.Implementation.ReportEvent("Click from shared logic", dict);
        }
    }
}

Методы API

Интерфейс IYandexMetrica
// Отслеживание событий.
void ReportEvent(string message);
void ReportEvent(string message, IDictionary parameters);
void ReportError(string message, Exception exception);

// Настройки AppMetrica.
void SetLocation(Coordinates coordinates);
void SetLocationTracking(bool enabled);

// Информация об используемой версии AppMetrica.
int LibraryApiLevel { get; }
string LibraryVersion { get; }

// Принудительная отправка событий из буфера.
void SendEventsBuffer();

// Отключение отправки статистики.
void SetStatisticsSending(bool enabled);

// Отправка Revenue.
void ReportRevenue(YandexAppMetricaRevenue revenue);

// Получение уникального идентификатора AppMetrica.
void RequestAppMetricaDeviceID(Action<String, YandexAppMetricaRequestDeviceIDError?> action);

// Установка Profile ID.
void SetUserProfileID(string userProfileID);

// Отправка пользовательских профилей.
void ReportUserProfile(YandexMetricaUserProfile userProfile);
Класс YandexAppMetricaConfig
YandexAppMetricaConfig (string apiKey);

string ApiKey { get; private set; }
string AppVersion { get; set; }
Coordinates? Location { get; set; }
int? SessionTimeout { get; set; }
bool? CrashReporting { get; set; }
bool? LocationTracking { get; set; }
bool? Logs { get; set; }
bool? InstalledAppCollecting { get; set; }
bool? StatisticsSending { get; set; }
bool? HandleFirstActivationAsUpdate { get; set; }
YandexAppMetricaPreloadInfo? PreloadInfo { get; set; }
Класс YandexAppMetricaConfig.Coordinates
double Latitude { get; set; }
double Longitude { get; set; }
Класс YandexAppMetricaPreloadInfo
YandexAppMetricaPreloadInfo(string trackingId);
            
string TrackingId { get; private set; }
Dictionary<string, string> AdditionalInfo { get; private set; }
Класс YandexAppMetricaRevenue
YandexAppMetricaRevenue(double price, string currency)

double Price { get; private set; }
int? Quantity { get; set; }
string Currency { get; private set; }
string ProductID { get; set; }
YandexAppMetricaReceipt? Receipt { get; set; }
IDictionary Payload { get; set; }
Класс YandexAppMetricaRevenue.YandexAppMetricaReceipt
string Data { get; set; }
string Signature { get; set; }
string TransactionID { get; set; }
Класс YandexMetricaUserProfile
List<IYandexMetricaUserProfileUpdate> UserProfileUpdates { get; }
YandexMetricaUserProfile Apply(IYandexMetricaUserProfileUpdate userProfileUpdate);
YandexMetricaUserProfile ApplyFromArray(List<IYandexMetricaUserProfileUpdate> userProfileUpdates);
Интерфейс IYandexMetricaAttribute
IYandexMetricaBirthDateAttribute BirthDate();
IYandexMetricaGenderAttribute Gender();
IYandexMetricaNameAttribute Name();
IYandexMetricaNotificationsEnabledAttribute NotificationsEnabled();
IYandexMetricaBooleanAttribute CustomBoolean(string key);
IYandexMetricaCounterAttribute CustomCounter(string key);
IYandexMetricaNumberAttribute CustomNumber(string key);
IYandexMetricaStringAttribute CustomString(string key);
Интерфейс IYandexMetricaBirthDateAttribute
IYandexMetricaUserProfileUpdate WithAge(int age);
IYandexMetricaUserProfileUpdate WithBirthDate(DateTime date);
IYandexMetricaUserProfileUpdate WithBirthDate(int year);
IYandexMetricaUserProfileUpdate WithBirthDate(int year, int month);
IYandexMetricaUserProfileUpdate WithBirthDate(int year, int month, int day);
IYandexMetricaUserProfileUpdate WithValueReset();
Интерфейс IYandexMetricaGenderAttribute
IYandexMetricaUserProfileUpdate WithValue(YandexMetricaGender value);
IYandexMetricaUserProfileUpdate WithValueReset();
Перечисление YandexMetricaGender
MALE,
FEMALE,
OTHER
Интерфейс IYandexMetricaNameAttribute
IYandexMetricaUserProfileUpdate WithValue(string value);
IYandexMetricaUserProfileUpdate WithValueReset();
Интерфейс IYandexMetricaNotificationsEnabledAttribute
IYandexMetricaUserProfileUpdate WithValue(bool value);
IYandexMetricaUserProfileUpdate WithValueReset();
Интерфейс IYandexMetricaBooleanAttribute
IYandexMetricaUserProfileUpdate WithValue(bool value);
IYandexMetricaUserProfileUpdate WithValueIfUndefined(bool value);
IYandexMetricaUserProfileUpdate WithValueReset();
Интерфейс IYandexMetricaCounterAttribute
IYandexMetricaUserProfileUpdate WithDelta(double value);
Интерфейс IYandexMetricaNumberAttribute
IYandexMetricaUserProfileUpdate WithValue(double value);
IYandexMetricaUserProfileUpdate WithValueIfUndefined(double value);
IYandexMetricaUserProfileUpdate WithValueReset();
Интерфейс IYandexMetricaStringAttribute
IYandexMetricaUserProfileUpdate WithValue(string value);
IYandexMetricaUserProfileUpdate WithValueIfUndefined(string value);
IYandexMetricaUserProfileUpdate WithValueReset();
Перечисление YandexAppMetricaRequestDeviceIDError
UNKNOWN,
NETWORK,
INVALID_RESPONSE

Подробно о методах и интеграции AppMetrica в приложение смотрите в разделах документации для Android и iOS.