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

AppMetrica Xamarin

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

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

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

YandexMetricaPCL

Библиотека реализует интерфейс для работы с кросс-платформенными частями приложения. Библиотека содержит:

  • общий интерфейс AppMetrica — IYandexMetrica;
  • статический прокси-класс YandexMetrica для работы через данный интерфейс с реализацией под текущую платформу;
  • заглушку YandexMetricaDummy (реализующую интерфейс IYandexMetrica), используемую, если никакая реализация не произвела регистрацию в прокси-классе YandexMetrica.
YandexMetricaAndroid

Библиотека содержит AAR-файл библиотеки AppMetrica, сгенерированный код для работы с методами библиотеки и класс YandexMetricaImplementation, который реализует интерфейс IYandexMetrica.

YandexMetricaiOS

Библиотека содержит A-файлы библиотеки AppMetrica, сгенерированный код для работы с методами библиотеки и класс YandexMetricaImplementation, который реализует интерфейс IYandexMetrica.

Подключение 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, string apiKey, Application app
    [no-highlight[

    Значение по умолчанию

    null

    Описание

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

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

    ]no-highlight]
    = null) {...}
    ПараметрЗначение по умолчаниюОписание
    apiKey Уникальный идентификатор приложения, который выдается в веб-интерфейсе AppMetrica при добавлении приложения
    app null

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

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

    public static void Activate(string apiKey) {...}
    Что такое 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);
        }
    }
}

Подключаются библиотеки YandexMetricaAndroid и YandexMetricaPCL. При старте приложения необходимо произвести активацию. Затем можно использовать общий интерфейс YandexMetricaPCL или работать напрямую с YandexMetricaAndroid.

using Android.App;
using Android.Widget;
using Android.OS;
using System.Collections.Generic;
using YandexMetricaPCL;

namespace Metrica.Xamarin.CrossPlatform.Droid
{
    [Activity(Label = "Metrica.Xamarin.CrossPlatform", MainLauncher = true, Icon = "@mipmap/icon")]
    public class MainActivity : Activity
    {
        int count = 1;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Init Android AppMetrica directly
            YandexMetricaAndroid.YandexMetricaImplementation.Activate(this, "API key", this.Application);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.myButton);

            button.Click += delegate {
                button.Text = string.Format("{0} clicks!", count);

                var dict = new Dictionary<string, string> { { "click", count.ToString() } };
                YandexMetrica.Implementation.ReportEvent("Click from Android", dict);

                SharedLogic.LogClick(count);

                ++count;
            };
        }
    }
}

Подключаются библиотеки YandexMetricaIOS и YandexMetricaPCL. При старте приложения необходимо произвести активацию. Затем можно использовать общий интерфейс YandexMetricaPCL или работать напрямую с YandexMetricaIOS.

using YandexMetricaPCL;
using System.Collections.Generic;

namespace Metrica.Xamarin.CrossPlatform.iOS
{
    public partial class ViewController : UIViewController
    {
        int count = 1;
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Init iOS AppMetrica directly
            YandexMetricaIOS.YandexMetricaImplementation.Activate("APIkey");

            // Perform any additional setup after loading the view, typically from a nib.
            Button.AccessibilityIdentifier = "myButton";
            Button.TouchUpInside += delegate {
                var title = string.Format("{0} clicks!", count);
                Button.SetTitle(title, UIControlState.Normal);

                var dict = new Dictionary<string, string> { { "click", count.ToString() } };
                YandexMetrica.Implementation.ReportEvent("Click from iOS", dict);

                SharedLogic.LogClick(count);

                ++count;
            };
        }
    }
}

Методы API

Работа с плагином производится с помощью методов интерфейса IYandexMetrica.

Отслеживание событий
void ReportEvent(string message);
void ReportEvent(string message, IDictionary<string, string> parameters);
void ReportError(string message, Exception exception);
Настройки AppMetrica
void SetLocation(float latitude, float longitude);
void SetTrackLocationEnabled (bool enabled);
void SetCustomAppVersion(string appVersion);
void SetEnvironmentValue(string key, string value);
void SetSessionTimeout (uint sessionTimeoutSeconds);
void SetReportCrashesEnabled (bool enabled);
void SetLoggingEnabled();

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

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