Добавление в Android приложения AppMetrica Yandex

Немного политинформации... :-) Yandex AppMetrica — это бесплатный инструмент для трекинга и аналитики вашего приложения. Отчёты по источникам трафика, ключевым показателям мобильного приложения, аудитории, сценариям использования, а также статистика по крэшам — всё это в одном SDK для всех популярных платформ.

Более подробно об AppMetrica можно почитать здесь https://tech.yandex.ru/metrica-mobile-sdk/ Там много полезной и нужной информации: Интеграция SDK, Гайды, Партнёры и интеграции и Записи докладов (Это очень интересно!).

Сначала нужно получить API key для интеграции в Android приложение и добавить свое приложение https://appmetrika.yandex.ru/application/new

Затем загрузить и добавить библиотеку в свой проект https://oss.sonatype.org/content/groups/public/com/yandex/android/mobmet... В Eclipse это делается так: Project - Properties - Java Build Path. На вкладке Libraries нажимайте на кнопку Add External JARS... и выбираете скачанную ранее библиотеку mobmetricalib-2.30-jar.jar. Ставите галочку на вкладке Order and Export напротив библиотеки.

Теперь настройте отправку данных и отслеживание местоположения пользователей — внесите изменения в файл AndroidManifest.xml, которые перечислены ниже.

Добавьте следующие разрешения перед элементом application:

<manifest>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application></application>
</manifest>

Внесите изменения в элемент application:

<manifest>
<application>
<!-- start of Yandex Metrica -->
<service
android:name="com.yandex.metrica.MetricaService"
android:enabled="true"
android:exported="true"
android:process=":Metrica">

<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="com.yandex.metrica.IMetricaService"/>
<data android:scheme="metrica"/>
</intent-filter>

<meta-data android:name="metrica:api:level" android:value="39"/>
</service>

<receiver
android:name="com.yandex.metrica.MetricaEventHandler"
android:enabled="true"
android:exported="true">

<!-- INSTALL_REFERRER необходим для трекинга кампаний -->
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
<!-- end of Yandex Metrica -->
</application>
</manifest>

Тег <service> нужно ставить именно до тегов <activity>, именно из-за этого у меня была сначала ошибка и крах сервиса! Будьте внимательны!

Проверьте уровень API библиотеки (metrica:api:level), который указывается в описании библиотеки при скачивании JAR-файла. Задание уровня API обязательно. Убедитесь, что он указан верно. Менять уровень следует только в случае изменения версии библиотеки.

Инициализируйте библиотеку в приложении и настройте отслеживание активности пользователей — унаследуйтесь от класса Application и переопределите метод onCreate() следующим образом:

public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// Инициализация AppMetrica SDK
YandexMetrica.activate(getApplicationContext(), API_key);
// Отслеживание активности пользователей
YandexMetrica.enableActivityAutoTracking(this);
}
}

Если заданная в приложении минимальная версия Android ниже 4.0, используйте следующие методы: YandexMetrica.onResumeActivity(activity) и YandexMetrica.onPauseActivity(activity) в соответствующих методах ваших Activity: onResume() и onPause().

public class YourActivity extends Activity {
...
@Override
protected void onResume() {
super.onResume();
YandexMetrica.onResumeActivity(this);
}

@Override
protected void onPause() {
YandexMetrica.onPauseActivity(this);
super.onPause();
}
...
}

Примечание:
Если вы используете proguard в работе вашего проекта, обязательно добавьте в файл proguard.cfg следующие строки:

-keep class com.yandex.metrica.** { *; }
-dontwarn com.yandex.metrica.**