/ mapkit-android-demo



Содержание
  1. Примеры использования
  2. Инициализация библиотеки с расширенной конфигурацией
  3. Отправка статистики на дополнительный ключ API
  4. Мониторинг сбоев приложения
  5. Ручной мониторинг сбоев приложения
  6. Мониторинг сбоев собственного приложения
  7. Мониторинг сбоев собственного приложения вручную
  8. Отправка местоположения устройства библиотекой
  9. Установка местоположения вручную
  10. Отправка настраиваемого события
  11. Отправка настраиваемого события с вложенными параметрами
  12. Отправка сообщения об ошибке
  13. Пример с groupIdentifier
  14. Пример с сообщением
  15. Отправка атрибутов профиля
  16. Отправка идентификатора профиля
  17. Отправка событий электронной коммерции
  18. Шаг 1. Настройте отправку событий электронной торговли на тестовый ключ API.
  19. Шаг 2. Проверьте отчет тестового приложения
  20. Шаг 3. Настройте отправку событий на основной ключ API
  21. Доход от отправки
  22. Шаг 1. Настройте отправку дохода на тестовый ключ API
  23. Шаг 2. Проверьте отчет тестового приложения
  24. Шаг 3. Настройте отправку дохода на основной ключ API
  25. Установка продолжительности тайм-аута сеанса
  26. Установка версии приложения
  27. Определение уровня API библиотеки
  28. Определение версии библиотеки
  29. Отслеживание источников установки
  30. Одновременное использование нескольких систем отслеживания
  31. Отслеживание открытий приложений через deeplinks
  32. Запрос отложенной deeplink
  33. Запрос параметров отложенных deeplink
  34. Отключить и включить отправку статистики
  35. Пример предупреждения

Примеры использования

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

Чтобы инициализировать lib При расширенной конфигурации запуска создайте экземпляр класса YandexMetricaConfig с соответствующими настройками и активируйте библиотеку с помощью метода YandexMetrica.activate (Context context, YandexMetricaConfig config). Расширенная конфигурация позволяет включать/отключать ведение журнала, устанавливать тайм-аут сеанса, передавать параметры для отслеживания предустановленных приложений и так далее.

Параметры расширенной конфигурации применяются с момента инициализация библиотеки.

  открытый класс MyApp расширяет приложение {@Override public void onCreate () {super.onCreate (); //Создание конфигурации расширенной библиотеки.  YandexMetricaConfig config = YandexMetricaConfig.newConfigBuilder (API_key)//Настройка конфигурации.  Например, чтобы включить ведение журнала.  .withLogs () ... .build (); //Инициализация SDK AppMetrica.  YandexMetrica.activate (getApplicationContext (), config); //Автоматическое отслеживание активности пользователей.  YandexMetrica.enableActivityAutoTracking (это);  }}  

Для настройки библиотеки во время работы приложения используйте методы класса ЯндексМетрика .

Отправка статистики на дополнительный ключ API

Отправка данных в дополнительный API key позволяет собирать собственную статистику для этих ключей API. Вы можете использовать это для управления доступом к информации для других пользователей. Например, для предоставления доступа к статистике аналитикам вы можете дублировать отправку маркетинговых данных для дополнительного ключа API. Таким образом, они будут иметь доступ только к той информации, которая им нужна.

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

Для инициализации репортера с расширенной конфигурацией создайте объект класса ReporterConfig с необходимыми настройками и активируйте репортер с помощью метода YandexMetrica.activateReporter (Context context, ReporterConfig config). Эта конфигурация используется для репортера с указанным ключом API. Вы можете настроить свою конфигурацию для каждого дополнительного ключа API.
Внимание. Репортер с расширенной конфигурацией должен быть инициализирован перед первым обращением к репортеру. В противном случае репортер будет инициализирован без конфигурации.
 //Создание расширенной конфигурации репортера .//Чтобы создать его, передайте API_key, который отличается от API_key приложения  .ReporterConfig reporterConfig = ReporterConfig.newConfigBuilder (API_key)//Настройка конфигурации.  Например, чтобы включить ведение журнала.  .withLogs () ... .build ();//Инициализация репортера. YandexMetrica.activateReporter (getApplicationContext (), reporterConfig);  

Чтобы отправлять данные с помощью репортера, вы должны получить объект, реализующий интерфейс IReporter, методом YandexMetrica.getReporter (Context context, String apiKey) и использовать методы интерфейса для отправлять отчеты. Если репортер не был инициализирован с помощью расширенной конфигурации, вызов этого метода инициализирует репортер для указанного ключа API.

Пример отправки события:

  YandexMetrica.getReporter (getApplicationContext (), API_key) .reportEvent («Обновления установлены»);  
Для корректного отслеживания репортеры должны быть вручную настроены на отправку событий о начале и паузе сеанса для каждого репортера. Используйте методы resumeSession (Activity activity) и pauseSession (Activity activity) интерфейса IReporter в реализации onResume () и onPause () вашего Activity:

  открытый класс YourActivity расширяет Activity {..  . @Override protected void onResume () {super.onResume ();  YandexMetrica.getReporter (getApplicationContext (), API_key) .resumeSession ();  } @Override protected void onPause () {YandexMetrica.getReporter (getApplicationContext (), API_key) .pauseSession ();  super.onPause ();  } ...}  

Мониторинг сбоев приложения

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

Чтобы отключить автоматический мониторинг, инициализируйте библиотеку с конфигурацией в при которой отправка сбоев отключена. Для этого передайте значение false методу withLocationTracking (включено логическое значение) при создании конфигурации расширенной библиотеки.

 //Создание  конфигурация расширенной библиотеки. YandexMetricaConfig config = YandexMetricaConfig.newConfigBuilder (API_key)//Отключение отправки данных о сбоях приложения.  .withCrashReporting (ложь). build ();//Инициализация AppMetrica SDK.YandexMetrica.activate (getApplicationContext (), config);  

Если автоматический мониторинг отключен, вы можете вручную отправлять информацию о сбоях.

Ручной мониторинг сбоев приложения

Отчеты о сбоях приложений отправляются по умолчанию. Чтобы избежать дублирования событий-исключений, отключите автоматический мониторинг сбоев приложения.

Чтобы отправлять информацию о сбоях вручную, используйте метод YandexMetrica.reportUnhandledException (Throwable exception).

   final Thread.UncaughtExceptionHandler previousUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler ();//Создание нового обработчика .Thread.UncaughtExceptionHandler uncaughtExceptionHandler = new Thread.UncaughtExceptionHandler () {@ uncaughtExceptionHandler () {@ uncaughtExceptionHandler () {@ uncaughtExceptionException  {//Отправка сообщения о сбое приложения на сервер AppMetrica.  YandexMetrica.reportUnhandledException (исключение);  } finally {//Отправка сообщения о сбое приложения в системный обработчик.  если (previousUncaughtExceptionHandler! = null) {previousUncaughtExceptionHandler.uncaughtException (поток, исключение);  }}}};//Установка обработчика по умолчанию .Thread.setDefaultUncaughtExceptionHandler (uncaughtExceptionHandler);  

Мониторинг сбоев собственного приложения

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

Чтобы включить библиотеку, добавьте следующую зависимость в файл build.gradle в блоке dependencies :

  зависимости {... реализация 'com.yandex.android:mobmetricalib-ndk-crashes:1.1.0'}  
Если вы не используете Gradle

Загрузите библиотеку и добавьте ее в проект .

Он содержит библиотеки для всех платформ (arm, armv7, mips, x86). Используйте разделение abi, чтобы исключить ненужные библиотеки.

Чтобы отключить автоматический мониторинг, инициализируйте библиотеку с конфигурацией, в которой отключена отправка сбоев. Для этого передайте значение false в метод withNativeCrashReporting (с включенным логическим значением) при создании конфигурации расширенной библиотеки.

 //Создание  конфигурация расширенной библиотеки. YandexMetricaConfig config = YandexMetricaConfig.newConfigBuilder (API_key)//Отключение отправки данных о сбоях нативного приложения.  .withNativeCrashReporting (false) .build ();//Инициализация AppMetrica SDK.YandexMetrica.activate (getApplicationContext (), config);  

Если автоматический мониторинг отключен, вы можете вручную отправить информацию о собственных сбоях.

Мониторинг сбоев собственного приложения вручную

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

Чтобы вручную отправлять информацию о сбоях собственного приложения, используйте метод YandexMetrica.reportNativeCrash (String nativeCrash) .

  String nativeCrashContent = "...  n" + "400ae000-400b7000 r-xp 00000000 103: 0c 835/system/lib/libcutils.son" +  "400b7000-400b8000 r - p 00008000 103: 0c 835/system/lib/libcutils.son" + "400b8000-400b9000 rw-p 00009000 103: 0c 835/system/lib/libcutils.son" + "  400b9000-400bc000 r-xp 00000000 103: 0c 1454/system/lib/liblog.son "+" ... ";//Отправка информации о сбое собственного приложения. YandexMetrica.reportNativeCrash (nativeCrashContent);  

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

По умолчанию отправка местоположения устройства в отчетах библиотеки включена. Чтобы определить местоположение более точно, добавьте в файл AndroidManifest.xml одно из следующих разрешений:
  • android.permission.ACCESS_COARSE_LOCATION — для приблизительного определения.
  • android.permission.ACCESS_FINE_LOCATION — для точного определения.
Чтобы отключить отправку, инициализируйте библиотеку с конфигурацией, в которой параметр местоположения отправляющего устройства отключен. Для этого при создании конфигурации расширенной библиотеки передайте значение false методу withLocationTracking (с включенным логическим значением).
 //Создание конфигурации расширенной библиотеки.  YandexMetricaConfig config = YandexMetricaConfig.newConfigBuilder (API_key)//Отключение отправки данных о местоположении устройства.  .withLocationTracking (false) .build ();//Инициализация SDK AppMetrica.YandexMetrica.activate (getApplicationContext (), config);  

Чтобы отключить отправку во время работы приложения, используйте метод YandexMetrica.setLocationTracking (включен логический):

  YandexMetrica.setLocationTracking  (false);  

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

Перед отправкой настраиваемой информации о местоположении устройства убедитесь, что создание отчетов не отключено.

По умолчанию местоположение устройства обнаруживается библиотекой. Чтобы отправить информацию о местоположении вашего устройства, передайте экземпляр класса android.location.Location в метод YandexMetrica.setLocation (Location Location).

 //Определение местоположения.  Location currentLocation = ...;//Установка собственной информации о местоположении устройства. ЯндексМетрика. setLocation (currentLocation);  
Чтобы отправить информацию о местоположении вашего собственного устройства с помощью начальной конфигурации, передайте android.location.Location в метод withLocation (Location Location) при создании конфигурации расширенной библиотеки.

 //Определение местоположения .Location currentLocation = ...;//Создание расширенной библиотеки  configuration.YandexMetricaConfig config = YandexMetricaConfig.newConfigBuilder (API_key)//Установите собственную информацию о местоположении устройства.  .withLocation (currentLocation) .build ();//Инициализация AppMetrica SDK.YandexMetrica.activate (getApplicationContext (), config);  

Чтобы возобновить определение местоположения библиотекой, передайте методу YandexMetrica.setLocation (Location Location) значение null :

YandexMetrica.setLocation(null);

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

Чтобы отправить настраиваемое событие без вложенных параметров, передайте в ЯндексМетрику краткое название или описание события .reportEvent (String eventName) метод:

  YandexMetrica.reportEvent ("Обновления установлены");  

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

AppMetrica SDK позволяет отправлять собственные события с вложенными параметрами, которые могут быть установлены в формате JSON или как набор атрибутов (Карта).

Чтобы передать параметры вложенного события в формате JSON, используйте событие YandexMetrica.reportEvent ( String eventName, String jsonValue) метод:

  String eventParameters = "{" name  ": " Алиса  ", " age  ": " 18  "  } "; YandexMetrica.reportEvent (" Новый человек ", eventParameters);  

Чтобы отправить настраиваемое сообщение о событии в виде карты, используйте метод YandexMetrica.reportEvent (String eventName, Map attributes):

  Map  eventParameters = new HashMap  (); eventParameters.put («имя», «Алиса»); eventParameters.put («age», 18); YandexMetrica.reportEvent («Новый человек», eventParameters  );  

Веб-интерфейс AppMetrica отображает до пяти уровней вложенности событий. Таким образом, если событие имеет шесть или более уровней, в отчете отображаются только пять верхних уровней. Вы можете использовать Reporting API, чтобы получить до десяти уровней.

Для получения дополнительной информации о событиях см. События.

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

Чтобы отправить собственное сообщение об ошибке, используйте следующие методы:

  • ЯндексМетрика. reportError (String message, Throwable error)
  • YandexMetrica.reportError (String groupIdentifier, String message)
  • YandexMetrica.reportError (String groupIdentifier, String message, Throwable error)

Методы с groupIdentifier поддерживаются, начиная с версии SDK AppMetrica 3.14.2.

Пример с groupIdentifier

Если ошибки отправляются с использованием методов с groupIdentifier , они группируются по идентификатору.

  попробуйте {Integer.valueOf ("  00xffWr0ng ");} catch (Выкидываемая ошибка) {YandexMetrica.reportError (" Ваш идентификатор "," Ошибка при разборе целого числа ", ошибка);}  

Не используйте значения переменных в качестве идентификаторов группировки. В противном случае количество групп увеличивается, и их становится сложно анализировать.

Пример с сообщением

Если ошибки отправляются с использованием YandexMetrica.reportError (String message, Throwable error) метод, они сгруппированы по трассировке стека.

  try {Integer.valueOf ("00xffWr0ng");} catch (Выбрасываемая ошибка) {YandexMetrica.reportError ("Ошибка при разборе  некоторое целое число ", ошибка);}  

Отправка атрибутов профиля

Для отправки атрибутов профиля перейдите к экземпляру обязательных атрибутов класса UserProfile и отправьте этот экземпляр с помощью метода YandexMetrica.reportUserProfile (профиль UserProfile). Для создания атрибутов профиля используйте методы класса Attribute.

 //Создание экземпляра UserProfile. UserProfile userProfile = UserProfile.newBuilder ()//Обновление предопределенных атрибутов.  .apply (Attribute.name (). withValue ("John")) .apply (Attribute.gender (). withValue (GenderAttribute.Gender.MALE)) .apply (Attribute.birthDate (). withAge (24)) .apply  (Attribute.notificationsEnabled (). WithValue (false))//Обновление настраиваемых атрибутов.  .apply (Attribute.customString ("string_attribute"). withValue ("string")) .apply (Attribute.customNumber ("number_attribute"). withValue (55)) .apply (Attribute.customCounter ("counter_attribute"). withDelta (  1)) .build ();//Установка ProfileID методом класса ЯндексМетрика. YandexMetrica.setUserProfileID ("id");//Отправка экземпляра UserProfile. YandexMetrica.reportUserProfile (userProfile);  

Отправка идентификатора профиля

Чтобы отправить ProfileId, используйте метод YandexMetrica.setUserProfileID (@Nullable String userProfileID).

Если вы не настраиваете отправку ProfileId в SDK, в веб-интерфейсе отображается значение appmetrica_device_id .
  ЯндексМетрика.  setUserProfileID ("id");  

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

AppMetrica не позволяет сегментировать события электронной коммерции на «тестовые» и «не тестовые». Если вы используете основной API-ключ для отладки покупок, тестовые события включаются в общую статистику. Поэтому для отладки отправки событий электронной торговли используйте репортер для отправки статистики на дополнительный ключ API.

Шаг 1. Настройте отправку событий электронной торговли на тестовый ключ API.

Для различных действий пользователя существуют соответствующие типы событий электронной торговли. Чтобы создать событие определенного типа, используйте соответствующий метод класса ECommerceEvent .

В примерах ниже показано, как отправлять события определенного типа (Java):

Открытие страницы
  Карта  payload = new HashMap  (); payload.put ("configuration  "," landscape "); payload.put (" full_screen "," true ");//Создание объекта экрана. ECommerceScreen screen = new ECommerceScreen () .setCategoriesPath (Arrays.asList (//Необязательно." Акции ","  Красная цена ")) .setName (" ProductCardActivity ")//Необязательно.  .setSearchQuery ("даниссимо кленовый сироп")//Необязательно.  .setPayload (полезная нагрузка); //Необязательно .ECommerceEvent showScreenEvent = ECommerceEvent.showScreenEvent (screen);//Отправка события электронной коммерции. YandexMetrica.getReporter (getApplicationContext (), «Тестирование ключа API»). ReportECommerce (showScreenEvent);  

Просмотр профиля продукта
  Карта  payload = new HashMap  (); payload.  put ("конфигурация", "ландшафт"); payload.put ("full_screen", "true");//Создание объекта экрана. ECommerceScreen screen = new ECommerceScreen () .setCategoriesPath (Arrays.asList (//Необязательно. "  Акции "," Красная цена ")) .setName (" ProductCardActivity ")//Необязательно.  .setSearchQuery ("даниссимо кленовый сироп")//Необязательно.  .setPayload (полезная нагрузка); //Необязательно .//Создание объекта actualPrice. ECommercePrice actualPrice = new ECommercePrice (new ECommerceAmount (4.53, "USD")) .setInternalComponents (Arrays.asList (//Необязательно. New ECommerceAmount (30_570_000, "wood"), new ECommerceAmount)  (26.89, "iron"), new ECommerceAmount (new BigDecimal (5.1), "gold")));//Создание объекта originalPrice. ECommercePrice originalPrice = new ECommercePrice (new ECommerceAmount (5.78, "USD")) .setInternalComponents (  Arrays.asList (//Необязательно. New ECommerceAmount (30_590_000, «дерево»), new ECommerceAmount (26,92, «железо»), new ECommerceAmount (новый BigDecimal (5. 5), "gold")));//Создание объекта продукта .ECommerceProduct product = new ECommerceProduct ("779213") .setActualPrice (actualPrice)//Необязательно.  .setPromocodes (Arrays.asList ("BT79IYX", "UT5412EP"))//Необязательно.  .setPayload (payload)//Необязательно.  .setOriginalPrice (originalPrice)//Необязательно.  .setName ("Продукт творожный« Даниссимо »5.9%, 130 г.")//Необязательно.  .setCategoriesPath (Arrays.asList («Продукты», «Молочные продукты», «Йогурты»)); //Необязательно .ECommerceEvent showProductCardEvent = ECommerceEvent.showProductCardEvent (product, screen);//Отправка события электронной коммерции.YandexMetrica.getReporter (getApplicationContext (), «Тестирование ключа API»). ReportECommerce (showProductCardEvent);  

Просмотр страницы продукта
  Map  payload = new HashMap  (); payload.put ("конфигурация", "ландшафт"); payload.put ("full_screen", "true");//Создание объекта экрана  .ECommerceScreen screen = new ECommerceScreen () .setCategoriesPath (Arrays.asList (//Необязательно. «Акции», «Красная цена»)) .setName («ProductCardActivity»)//Необязательно.  .setSearchQuery ("даниссимо кленовый сироп")//Необязательно.  .setPayload (полезная нагрузка); //Необязательно .//Создание объекта actualPrice. ECommercePrice actualPrice = new ECommercePrice (new ECommerceAmount (4.53, "USD")) .setInternalComponents (Arrays.asList (//Необязательно. New ECommerceAmount (30_570_000, "wood"), new ECommerceAmount)  (26.89, "iron"), new ECommerceAmount (new BigDecimal (5.1), "gold")));//Создание объекта originalPrice. ECommercePrice originalPrice = new ECommercePrice (new ECommerceAmount (5.78, "USD")) .setInternalComponents (  Arrays.asList (//Необязательно. New ECommerceAmount (30_590_000, "wood"), new ECommerceAmount (26.92, "iron"), new ECommerceAmount (new BigDecimal (5.5), "gold")));//Создание объекта продукта  .ECommerceProduct product = new ECommerceProduct ("779213") .setActualPrice (actualPrice)//Необязательно.  .setPromocodes (Arrays.asList ("BT79IYX", "UT5412EP"))//Необязательно.  .setPayload (payload)//Необязательно.  .setOriginalPrice (originalPrice)//Необязательно.  .setName ("Продукт творожный« Даниссимо »5.9%, 130 г.")//Необязательно.  .setCategoriesPath (Arrays.asList («Продукты», «Молочные продукты», «Йогурты»)); //Необязательно.//Создание объекта реферера. ECommerceReferrer referrer = new ECommerceReferrer () .setType ("button")//Необязательно.  .setIdentifier ("76890")//Необязательно.  .setScreen (экран); //Необязательно. ECommerceEvent showProductDetailsEvent = ECommerceEvent.showProductDetailsEvent (product, referrer); //Реферер необязателен - может быть нулевым.//Отправка события электронной коммерции. ЯндексМетрика.getReporter (getApplicationContext (), «Тестирование ключа API»). reportECommerce (showProductDetailsEvent);  

Добавление или удаление элемента в /из корзины
  Карта  payload = new HashMap  (); payload.put ("конфигурация", "ландшафт"); payload.put  ("full_screen", "true");//Создание объекта экрана. ECommerceScreen screen = new ECommerceScreen () .setCategoriesPath (Arrays.asList (//Необязательно. "Акции", "Красная цена")) .setName ("ProductCardActivity  ")//Необязательный.  .setSearchQuery ("даниссимо кленовый сироп")//Необязательно.  .setPayload (полезная нагрузка); //Необязательно .//Создание объекта actualPrice. ECommercePrice actualPrice = new ECommercePrice (new ECommerceAmount (4.53, "USD")) .setInternalComponents (Arrays.asList (//Необязательно. New ECommerceAmount (30_570_000, "wood"), new ECommerceAmount)  (26.89, "iron"), new ECommerceAmount (new BigDecimal (5.1), "gold")));//Создание объекта originalPrice. ECommercePrice originalPrice = new ECommercePrice (new ECommerceAmount (5.78, "USD")) .setInternalComponents (  Arrays.asList (//Необязательно. New ECommerceAmount (30_590_000, "wood"), new ECommerceAmount (26.92, "iron"), new ECommerceAmount (new BigDecimal (5.5), "gold")));//Создание объекта продукта  .ECommerceProduct product = new ECommerceProduct ("779213") .setActualPrice (actualPrice)//Необязательно.  .setPromocodes (Arrays.asList ("BT79IYX", "UT5412EP"))//Необязательно.  .setPayload (payload)//Необязательно.  .setOriginalPrice (originalPrice)//Необязательно.  .setName ("Продукт творожный« Даниссимо »5.9%, 130 г.")//Необязательно.  .setCategoriesPath (Arrays.asList («Продукты», «Молочные продукты», «Йогурты»)); //Необязательно.//Создание объекта реферера. ECommerceReferrer referrer = new ECommerceReferrer () .setType ("button")//Необязательно.  .setIdentifier ("76890")//Необязательно.  .setScreen (экран); //Необязательно .//Создание объекта cartItem. ECommerceCartItem cartItem1 = new ECommerceCartItem (product, actualPrice, 1.0) .setReferrer (referrer); //Необязательно. ECommerceEvent addCartItemEvent = ECommerceEvent.addCartItemEvent (cartItem1);//Отправка события электронной коммерции.YandexMetrica.getReporter (getApplicationContext (), «Тестирование ключа API»). ReportECommerce (addCartItemEvent); EComartItemEvent.EventCartItemEvent.  cartItem1);//Отправка события электронной коммерции. YandexMetrica.getReporter (getApplicationContext (), «Тестирование ключа API»). reportECommerce (removeCartItemEvent);  

Начало и завершение покупки
  Карта  payload = new  HashMap  (); payload.put ("конфигурация", "ландшафт"); payload.put ("full_screen", "true");//Создание объекта экрана .ECommerceScreen screen = new ECommerceScreen () .setCategoriesPath (Arrays. asList (//Необязательно. "Акции", "Красная цена")) .setName ("ProductCardActivity")//Необязательно.  .setSearchQuery ("даниссимо кленовый сироп")//Необязательно.  .setPayload (полезная нагрузка); //Необязательно .//Создание объекта actualPrice. ECommercePrice actualPrice = new ECommercePrice (new ECommerceAmount (4.53, "USD")) .setInternalComponents (Arrays.asList (//Необязательно. New ECommerceAmount (30_570_000, "wood"), new ECommerceAmount)  (26.89, "iron"), new ECommerceAmount (new BigDecimal (5.1), "gold")));//Создание объекта originalPrice. ECommercePrice originalPrice = new ECommercePrice (new ECommerceAmount (5.78, "USD")) .setInternalComponents (  Arrays.asList (//Необязательно. New ECommerceAmount (30_590_000, "wood"), new ECommerceAmount (26.92, "iron"), new ECommerceAmount (new BigDecimal (5.5), "gold")));//Создание объекта продукта  .ECommerceProduct product = new ECommerceProduct ("779213") .setActualPrice (actualPrice)//Необязательно.  .setPromocodes (Arrays.asList ("BT79IYX", "UT5412EP"))//Необязательно.  .setPayload (payload)//Необязательно.  .setOriginalPrice (originalPrice)//Необязательно.  .setName ("Продукт творожный« Даниссимо »5.9%, 130 г.")//Необязательно.  .setCategoriesPath (Arrays.asList («Продукты», «Молочные продукты», «Йогурты»)); //Необязательно.//Создание объекта реферера. ECommerceReferrer referrer = new ECommerceReferrer () .setType ("button")//Необязательно.  .setIdentifier ("76890")//Необязательно.  .setScreen (экран); //Необязательно .//Создание объекта cartItem. ECommerceCartItem cartItem1 = new ECommerceCartItem (product, actualPrice, 1.0) .setReferrer (referrer); //Необязательно.//Создание объекта заказа. ECommerceOrder order = new ECommerceOrder ("88528768", Arrays.asList (cartItem1)) .setPayload (payload); //Необязательно. ECommerceEvent beginCheckoutEvent = ECommerceEvent.beginCheckoutEvent (order);//Отправка события электронной коммерции. YandexMetrica.getReporter (getApplicationContext (), «Тестирование ключа API»). ReportECommerce (beginCheckoutEvent); ECommerceEventseventEvent (ECommerceEventsevent.Event)  order);//Отправка события электронной коммерции.YandexMetrica.getReporter (getApplicationContext (), «Тестирование ключа API»). reportECommerce (PurchaEvent);  

Для различных действий пользователя существуют соответствующие типы событий электронной коммерции. Чтобы создать событие определенного типа, используйте соответствующий метод класса ECommerceEvent .

В примерах ниже показано, как отправлять события определенного типа (Kotlin):

Открытие страницы
  val payload = mapOf (от "конфигурации" до "альбомной", от "full_screen" до "true") //Создание объекта экрана .val screen = ECommerceScreen (). Apply {categoryPath = listOf ("Акции", "Красная цена")//Необязательно.  name = "ProductCardActivity"//Необязательно. searchQuery = "даниссимо кленовый сироп"//Необязательно.  this.payload = payload//Необязательно.} val showScreenEvent = ECommerceEvent.showScreenEvent (screen)//Отправка события электронной коммерции. YandexMetrica.getReporter (applicationContext, «Тестирование ключа API»). reportECommerce (showScreenEvent)  

Просмотр профиля продукта
  val payload = mapOf ("конфигурация" на "альбомную", "полноэкранный  "to" true ")//Создание объекта экрана .val screen = ECommerceScreen (). apply {categoryPath = listOf (" Акции "," Красная цена ")//Необязательно.  name = "ProductCardActivity"//Необязательно.  searchQuery = "даниссимо кленовый сироп"//Необязательно.  this.payload = payload//Необязательно.}//Создание объекта actualPrice.val actualPrice = ECommercePrice (ECommerceAmount (4.53, «USD»)) .apply {internalComponents = listOf (//Необязательно. ECommerceAmount (30570000, «wood»)  , ECommerceAmount (26.89, "iron"), ECommerceAmount (BigDecimal (5.1), "gold"))}//Создание объекта originalPrice.val originalPrice = ECommercePrice (ECommerceAmount (5.78, "USD")) .apply {internalComponents = listOf  (//Необязательно. ECommerceAmount (30590000, «дерево»), ECommerceAmount (26,92, «железо»), ECommerceAmount (BigDecimal (5.5), «gold»))}//Создание объекта продукта .val product = ECommerceProduct («779213  ") .apply {this.actualPrice = actualPrice//Необязательно.  this.originalPrice = originalPrice//Необязательно.  promocodes = listOf ("BT79IYX", "UT5412EP")//Необязательно.  name = "Продукт творожный« Даниссимо »5.9%, 130 г." //Необязательный.  CategoriesPath = listOf («Продукты», «Молочные продукты», «Йогурты»)//Необязательно.  this.payload = payload//Необязательно.  } val showProductCardEvent = ECommerceEvent.showProductCardEvent (product, screen)//Отправка события электронной коммерции.YandexMetrica.getReporter (applicationContext, «Тестирование ключа API»). reportECommerce (showProductCardEvent)  

Просмотр страницы продукта
  val payload = mapOf  (от "configuration" до "ландшафта", от "full_screen" до "true")//Создание объекта экрана .val screen = ECommerceScreen (). apply {categoryPath = listOf ("Акции", "Красная цена")//Необязательно.  name = "ProductCardActivity"//Необязательно.  searchQuery = "даниссимо кленовый сироп"//Необязательно.  this.payload = payload//Необязательно.}//Создание объекта actualPrice.val actualPrice = ECommercePrice (ECommerceAmount (4.53, «USD»)) .apply {internalComponents = listOf (//Необязательно. ECommerceAmount (30570000, «wood»)  , ECommerceAmount (26.89, «железо»), ECommerceAmount (BigDecimal (5.1), «gold»))}//Создание объекта originalPrice. Val originalPrice = ECommercePrice (ECommerceAmount (5,78, «USD»)). apply {internalComponents = listOf (//Необязательно. ECommerceAmount (30590000, «дерево»), ECommerceAmount (26,92, «железо»), ECommerceAmount (BigDecimal (5.5), «gold»))}//Создание объекта продукта.val product  = ECommerceProduct ("779213") .apply {this.actualPrice = actualPrice//Необязательно.  this.originalPrice = originalPrice//Необязательно.  promocodes = listOf ("BT79IYX", "UT5412EP")//Необязательно.  name = "Продукт творожный« Даниссимо »5.9%, 130 г." //Необязательный.  CategoriesPath = listOf («Продукты», «Молочные продукты», «Йогурты»)//Необязательно.  this.payload = payload//Необязательно.  }//Создание объекта реферера. Val referrer = ECommerceReferrer () .apply {type = "button"//Необязательно.  идентификатор = "76890"//Необязательно.  this.screen = screen//Необязательно.  } val showProductDetailsEvent = ECommerceEvent.showProductDetailsEvent (product, referrer)//Реферер необязателен - может иметь значение null .//Отправка события электронной коммерции.YandexMetrica.getReporter (applicationContext, «Тестирование ключа API»). reportECommerce (showProductDetailsEvent)  

Добавление или удаление элемента в/из корзины
  val payload = mapOf ("configuration" в "альбомную ориентацию", "full_screen" в "true")//Создание объекта экрана. val screen = ECommerceScreen (). apply {categoryPath  = listOf ("Акции", "Красная цена")//Необязательно.  name = "ProductCardActivity"//Необязательно.  searchQuery = "даниссимо кленовый сироп"//Необязательно.  this.payload = payload//Необязательно.}//Создание объекта actualPrice.val actualPrice = ECommercePrice (ECommerceAmount (4.53, «USD»)) .apply {internalComponents = listOf (//Необязательно. ECommerceAmount (30570000, «wood»)  , ECommerceAmount (26.89, "iron"), ECommerceAmount (BigDecimal (5.1), "gold"))}//Создание объекта originalPrice.val originalPrice = ECommercePrice (ECommerceAmount (5.78, "USD")) .apply {internalComponents = listOf  (//Необязательно. ECommerceAmount (30590000, «дерево»), ECommerceAmount (26,92, «железо»), ECommerceAmount (BigDecimal (5.5), «gold»))}//Создание объекта продукта .val product = ECommerceProduct («779213  ") .apply {this.actualPrice = actualPrice//Необязательно.  this.originalPrice = originalPrice//Необязательно.  promocodes = listOf ("BT79IYX", "UT5412EP")//Необязательно.  name = "Продукт творожный« Даниссимо »5.9%, 130 г." //Необязательный.  CategoriesPath = listOf («Продукты», «Молочные продукты», «Йогурты»)//Необязательно.  this.payload = payload//Необязательно.  }//Создание объекта реферера. Val referrer = ECommerceReferrer () .apply {type = "button"//Необязательно.  идентификатор = "76890"//Необязательно.  this.screen = screen//Необязательно.  }//Создание объекта cartItem. Val cartItem1 = ECommerceCartItem (product, actualPrice, 1.0) .apply {this. реферер = реферер//Необязательно.  } val addCartItemEvent = ECommerceEvent.addCartItemEvent (cartItem1)//Отправка события электронной коммерции.YandexMetrica.getReporter (applicationContext, "Тестирование ключа API"). reportECommerce (addCartItemEvent) val removeCartItemEvent = ECommerceEventItemEvent.reventC  -commerce event.YandexMetrica.getReporter (applicationContext, «Тестирование ключа API»). reportECommerce (removeCartItemEvent)  

Запуск и завершение покупки
  val payload = mapOf ("configuration" в "альбомную ориентацию", "full_screen" в "true"  )//Создание объекта экрана .val screen = ECommerceScreen (). Apply {categoryPath = listOf ("Акции", "Красная цена")//Необязательно.  name = "ProductCardActivity"//Необязательно.  searchQuery = "даниссимо кленовый сироп"//Необязательно.  this.payload = payload//Необязательно.}//Создание объекта actualPrice.val actualPrice = ECommercePrice (ECommerceAmount (4.53, «USD»)) .apply {internalComponents = listOf (//Необязательно. ECommerceAmount (30570000, «wood»)  , ECommerceAmount (26.89, "iron"), ECommerceAmount (BigDecimal (5.1), "gold"))}//Создание объекта originalPrice.val originalPrice = ECommercePrice (ECommerceAmount (5.78, "USD")) .apply {internalComponents = listOf  (//Необязательно. ECommerceAmount (30590000, «дерево»), ECommerceAmount (26,92, «железо»), ECommerceAmount (BigDecimal (5.5), «gold»))}//Создание объекта продукта .val product = ECommerceProduct («779213  ") .apply {this.actualPrice = actualPrice//Необязательно.  this.originalPrice = originalPrice//Необязательно.  promocodes = listOf ("BT79IYX", "UT5412EP")//Необязательно.  name = "Продукт творожный« Даниссимо »5.9%, 130 г." //Необязательный.  CategoriesPath = listOf («Продукты», «Молочные продукты», «Йогурты»)//Необязательно.  this.payload = payload//Необязательно.  }//Создание объекта реферера. Val referrer = ECommerceReferrer () .apply {type = "button"//Необязательно.  идентификатор = "76890"//Необязательно.  this.screen = screen//Необязательно.  }//Создание объекта cartItem. Val cartItem1 = ECommerceCartItem (product, actualPrice, 1.0) .apply {this.referrer = referrer//Необязательно.  }//Создание объекта заказа .val order = ECommerceOrder ("88528768", listOf (cartItem1)) .apply {this.payload = payload//Необязательно.  } val beginCheckoutEvent = ECommerceEvent.beginCheckoutEvent (order)//Отправка события электронной коммерции.YandexMetrica.getReporter (applicationContext, «Тестирование ключа API»). reportECommerce (beginCheckoutEvent) val PurchaEvent = ECommerceEvent.purchaseEvent (заказ)//Отправка события  -commerce event.YandexMetrica.getReporter (applicationContext, «Тестирование ключа API»). reportECommerce (buyEvent)  

Шаг 2. Проверьте отчет тестового приложения

Сделайте тестовые покупки в приложении. Через некоторое время проверьте отчет «Анализ покупок» в интерфейсе AppMetrica. Убедитесь, что в отчете показаны события электронной торговли.

Для получения дополнительных сведений об отчете см. Анализ покупок.

Шаг 3. Настройте отправку событий на основной ключ API

После успешного тестирования настройте отправку событий ECommerce на основной ключ API.

Кому отправьте экземпляр ECommerceEvent основному ключу API, используйте метод YandexMetrica.reportECommerce (событие @NonNull ECommerceEvent).

  ...//Отправка события электронной коммерции. YandexMetrica.reportECommerce (ecommerceEvent);  

  ...//Отправка события электронной коммерции. ЯндексМетрика.reportECommerce (ecommerceEvent)  

Доход от отправки

AppMetrica поддерживает доход проверка сделанных покупок с помощью библиотеки Google Play Billing. Проверка позволяет фильтровать покупки, сделанные из взломанных приложений. Если проверка включена и покупка не удалась, она не отображается в отчетах.

Примечание. Локальная проверка с открытым ключом используется для проверки покупок на Android. Чтобы включить проверку, создайте публичный ключ и укажите его в настройках. Для получения дополнительной информации см. Отправка информации о покупке на Android.

Шаг 1. Настройте отправку дохода на тестовый ключ API

AppMetrica не позволяет разделить доход на «тестовый» и «не тестовый». Если вы используете основной API-ключ для отладки покупок, то тестовые покупки включаются в общую статистику. Поэтому для отладки отправки дохода используйте репортер для отправки статистики на дополнительный ключ API.

В этом разделе описаны шаги для отправки дохода на дополнительный ключ API:

Чтобы проверить покупки на Android, настройте отправку экземпляра Revenue.Receipt вместе с Revenue:

  1. Создайте экземпляр Revenue.Receipt с информацией о покупке и подписью. Его необходимо использовать при создании экземпляра Revenue в Revenue.Builder.withReceipt (квитанция Revenue.Receipt).
  2. Создайте экземпляр Revenue с помощью конструктора Revenue.Builder.
  3. Отправьте экземпляр Revenue в тестовый ключ API с помощью IReporter. Дополнительные сведения о репортерах см. В разделе Примеры использования..
  void handlePurchase (Покупка покупки) {...//Создание экземпляра Revenue.Receipt. //Используется для проверки покупок в Google Play.  Revenue.Receipt доходReceipt = Revenue.Receipt.newBuilder () .withData (Purchase.getOriginalJson ()) .withSignature (Purchase.getSignature ()) .build (); //Создание экземпляра Revenue.  Выручка = Revenue.newBuilderWithMicros (99000000, Currency.getInstance ("RUB")) .withProductID ("com.yandex.service.299") .withQuantity (2) .withReceipt (доходReceipt) .withPayload ("{" source   ": " Google Play  "}") .build (); //Отправка экземпляра Revenue с помощью репортера.  YandexMetrica.getReporter (getApplicationContext (), «Ключ API тестирования»). ReportRevenue (доход);}  

Чтобы отправить информацию о покупке без проверки:

  1. Создайте Экземпляр Revenue с использованием конструктора Revenue.Builder.
  2. (Необязательно) Для группировки покупок укажите OrderID в методе Revenue.Builder.withPayload (String payload).
    Примечание. Если OrderID не указан, AppMetrica генерирует идентификатор автоматически.
  3. Отправить Revenue в тестовый ключ API с помощью IReporter. Для получения дополнительной информации о репортерах см. Примеры использования.
 //Создание экземпляра Revenue.Revenuevenue = Revenue.newBuilderWithMicros (99000000, Currency.  getInstance ("RUB")) .withProductID ("com.yandex.service.299") .withQuantity (2)//Передача параметра OrderID в методе .withPayload (String payload) для группировки покупок.  .withPayload ("{" OrderID  ": " Identifier  ", " source  ": " Google Play  "}") .build ();//Отправка экземпляра Revenue с помощью reporter.YandexMetrica.getReporter (  getApplicationContext (), «Тестирование ключа API»). reportRevenue (доход);  

Шаг 2. Проверьте отчет тестового приложения

В интерфейсе AppMetrica проверьте отчет «Доход». Убедитесь, что количество покупок увеличилось.

Для получения дополнительной информации об отчете см. Доход.

Шаг 3. Настройте отправку дохода на основной ключ API

После успешного тестирования настройте отправку дохода на основной ключ API.

Для отправки экземпляр Revenue к основному ключу API, используйте метод YandexMetrica.reportRevenue (Revenuevenue).

  ...//Отправка  Экземпляр Revenue. ЯндексМетрика. reportRevenue (доход);  

Установка продолжительности тайм-аута сеанса

По умолчанию время ожидания сеанса составляет 10 секунд. Минимальное допустимое значение для параметра sessionTimeout составляет 10 секунд.

Чтобы изменить продолжительность тайм-аута, передайте значение в секундах в withSessionTimeout (int sessionTimeout) при создании конфигурации расширенной библиотеки.

 //Создание конфигурации расширенной библиотеки. YandexMetricaConfig config = YandexMetricaConfig.newConfigBuilder (API_key)//Установка длительности таймаута сеанса.  .withSessionTimeout (15) .build ();//Инициализация AppMetrica SDK.YandexMetrica.activate (getApplicationContext (), config);  

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

По умолчанию версия приложения устанавливается в build.gradle.

Чтобы указать версию приложения из кода, передайте версию приложения методу withAppVersion (String appVersion) при создании конфигурации расширенной библиотеки.

 //Создание конфигурации расширенной библиотеки. YandexMetricaConfig config = YandexMetricaConfig.newConfigBuilder (API_key)//Установка версии приложения.  .withAppVersion ("1.13.2") .build ();//Инициализация AppMetrica SDK.YandexMetrica.activate (getApplicationContext (), config);  

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

Определение уровня API библиотеки

Чтобы определить уровень API библиотеки из кода приложения, используйте метод YandexMetrica.getLibraryApiLevel ().
  int libraryApiLevel = ЯндексМетрика.  getLibraryApiLevel ();  

Определение версии библиотеки

Чтобы определить версию библиотеки из кода приложения, используйте метод YandexMetrica.getLibraryVersion ():

  String libraryVersion = YandexMetrica.getLibraryVersion ();  

Отслеживание источников установки

Отслеживание источника установки в AppM SDK etrica включен по умолчанию.

Чтобы отключить отслеживание, внесите следующие изменения в файл AndroidManifest.xml:
   xmlns: tools = "http://schemas.android.com/tools" > ...  ...    ... 

Одновременное использование нескольких систем отслеживания

При одновременном использовании нескольких систем для отслеживания источника установки статистика может быть неверной. Это происходит потому, что каждая система отслеживания добавляет свой собственный INSTALL_REFERRER BroadcastReceiver . А некоторые версии Google Play передают INSTALL_REFERRER только одной из систем отслеживания. Чтобы решить эту проблему, выполните следующие действия:

  1. Добавьте основной INSTALL_REFERRER BroadcastReceiver для библиотеки AppMetrica в файле AndroidManifest.xml:
       ...  ...      ... 

  2. Зарегистрируйте INSTALL_REFERRER BroadcastReceiver другого системы слежения в библиотеке. Для этого используйте метод YandexMetrica.registerReferrerBroadcastReceivers (BroadcastReceiver … anotherReferrerReceivers):
      public void YourApplication extends Application {@Override public void onCreate () {super.onCreate (); //Инициализация SDK AppMetrica.  ...//Создание BroadcastReceiver для INSTALL_REFERRER других систем слежения.  AnotherReferrerReceiver anotherReferrerReceiver = новый AnotherReferrerReceiver (); //Регистрация INSTALL_REFERRER BroadcastReceiver, созданного в Appmetrica.  YandexMetrica.registerReferrerBroadcastReceivers (anotherReferrerReceiver);  ...}}  

Библиотека получит INSTALL_REFERRER , посчитает его и передаст другим зарегистрированным трекерам. Таким образом, все установочные трекеры исходного кода могут рассчитывать этот INSTALL_REFERRER на равных.

Если этот вариант вам не подходит, вы можете отключить отслеживание INSTALL_REFERRER в библиотеке AppMetrica и реализуйте собственный INSTALL_REFERRER BroadcastReceiver , который доставит INSTALL_REFERRER во все системы отслеживания:

  public class YourOwnReceiver extends BroadcastReceiver {@Override public void onReceive (Context context, Intent intent) {//Здесь вам нужно передать экземпляр Intent в другие системы отслеживания.  новый MetricaEventHandler (). onReceive (контекст, намерение);  }}  

Отслеживание открытий приложений через deeplinks

Чтобы отслеживать открытия приложений, использующих deeplink, вы вносите изменения в Activity, которая обрабатывает deeplink. Отслеживание открытия приложений необходимо для правильного отслеживания кампаний ремаркетинга.

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

Используйте метод reportAppOpen () для отслеживания открытий приложений:

  открытый класс DeeplinkActivity расширяет Activity  {@Override protected void onCreate (@Nullable final Bundle savedInstanceState) {super.onCreate (savedInstanceState);  if (savedInstanceState == null) {YandexMetrica.reportAppOpen (это);  }} @Override protected void onNewIntent (последнее намерение намерения) {super.onNewIntent (намерение);  YandexMetrica.reportAppOpen (это);  }}  
Примечание. Вы можете добавить открытие приложения через отложенную deeplink на Android.

Чтобы запросить отложенный deeplink, передайте экземпляр класса, реализующий интерфейс DeferredDeeplinkListener, в метод YandexMetrica.requestDeferredDeeplink (DeferredDeeplinkListener listener). Метод возвращает отложенный deeplink только при первоначальном запуске приложения после получения реферера установки Google Play.

Примечание. Если Google Play Install Referrer получен сразу после установки, система не сможет правильно распознать первый запуск приложения.
  YandexMetrica.requestDeferredDeeplink (new DeferredDeeplinkListener () {@Override public void onDeeplinkLoaded (String deeplink) {Log.i ("Deeplink", "deeplink =" + deeplink);} @Override public void onError (Error error  реферер) {Log.i ("Deeplink", "Ошибка:" + error.getDescription () + ", неанализируемый реферер:" + реферер);}});  

  YandexMetrica.requestDeferredDeeplink (object: DeferredDeeplinkListener {переопределить удовольствие onDeeplinkLoaded (deeplink: String) {Log.  i ("Deeplink", "deeplink = $ deeplink")} переопределить fun onError (error: DeferredDeeplinkListener.Error, referrer: String?) {Log.i ("Deeplink", "Error: $ {error.description}, unparsed referrer)  : $ referrer ")}})  

Подробнее информацию об отложенных deeplinks см. в разделе Поддержка отложенных deeplinks

Чтобы запросить параметры отложенного диплинка, перейдите в ЯндексМетрику. requestDeferredDeeplinkParameters (DeferredDeeplinkParametersListener listener) метод экземпляра, который реализует интерфейс DeferredDeeplinkParametersListener. Метод возвращает параметры отложенного deeplink только при первом запуске приложения после получения реферера установки Google Play.

Примечание. Если Google Play Install Referrer получен сразу после установки, система не сможет правильно распознать первый запуск приложения.
  YandexMetrica.requestDeferredDeeplinkParameters (new DeferredDeeplinkParametersListener () {@Override  public void onParametersLoaded (Map  parameters) {//Обработка параметров deeplink. for (String key: parameters.keySet ()) {Log.i ("Deeplink params", "key:" + key + "value:  "+ parameters.get (key));}} @Override public void onError (Error error, String referrer) {//Обработка ошибки. Log.e (" Ошибка! ", error.getDescription ());}})  ;  

Для получения дополнительной информации об отложенных deeplink, см. Поддержка отложенных deeplinks

Отключить и включить отправку статистики

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

 //Создание конфигурации расширенной библиотеки. YandexMetricaConfig config  = YandexMetricaConfig.newConfigBuilder (API_key)//Отключение статистики отправки.  .withStatisticsSending (false) .build ();//Инициализация SDK AppMetrica.YandexMetrica.activate (getApplicationContext (), config);  
После того, как пользователь подтвердил отправку статистики (например, в настройках приложения или в соглашении о первом запуске приложения), следует вызвать YandexMetrica.setStatisticsSending (Context context, boolean enabled), чтобы включить его:

 //Проверка состояния логической переменной.  Показывает подтверждение пользователя. If (flag) {//Включение отправки статистики.  YandexMetrica.setStatisticsSending (getApplicationContext (), true);}  

Пример предупреждения

Вы можете использовать любой текст для информирования пользователей о сборе статистики. Например:

Это приложение использует аналитику AppMetrica (Яндекс.Метрика для приложений), предоставляемую ООО «ЯНДЕКС», 119021, Россия, Москва, ул. Льва Толстого, 16. (далее «Яндекс»), как указано в Условиях использования сервиса.

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

Обезличенная информация об использовании вами этого приложения, собранная инструментами AppMetrica, будет передана Яндексу и сохранена на сервере Яндекса в ЕС и Российской Федерации. Яндекс обработает эту информацию, чтобы оценить, как вы используете приложение, составить для нас отчеты о работе нашего приложения и предоставить другие услуги.

пакет com.yandex.mapkitdemo;
import android.app.Activity;
import android.os.Bundle;
import androidx.annotation.NonNull;
import com.yandex.mapkit.Animation;
import com.yandex.mapkit.MapKitFactory;
import com.yandex.mapkit.geometry.Point;
import com.yandex.mapkit.layers.GeoObjectTapEvent;
import com.yandex.mapkit.layers.GeoObjectTapListener;
import com.yandex.mapkit.map.CameraPosition;
import com.yandex.mapkit.map.GeoObjectSelectionMetadata;
import com.yandex.mapkit.map.InputListener;
import com.yandex.mapkit.map.Map;
import com.yandex.mapkit.mapview.MapView;
/**
* В этом примере показано, как активировать выделение.
*/
открытый класс SelectionActivity расширяет Activity, реализует GeoObjectTapListener, InputListener {
/**
* Замените «your_api_key» действительным ключом разработчика.
* Вы можете получить его на сайте https://developer.tech.yandex.ru/.
*/
закрытая конечная строка MAPKIT_API_KEY = «your_api_key»;
закрытая конечная точка TARGET_LOCATION = новая точка (59.936760, 30.314673 );
частный MapView mapView;
@Override
protected void onCreate (Bundle savedInstanceState) {
/**
* Установите ключ API перед вызовом инициализации в MapKitFactory.
* Рекомендуется установить ключ api в методе Application.onCreate,
* но здесь мы делаем это в каждом действии, чтобы сделать примеры изолированными.
*/
MapKitFactory.setApiKey (MAPKIT_API_KEY);
/**
* Инициализировать библиотеку для загрузки необходимых собственных библиотек.
* Рекомендуется инициализировать библиотеку MapKit в Activity. onCreate метод
* Инициализация в методе Application.onCreate может привести к дополнительным вызовам и увеличению расхода заряда батареи.
*/
MapKitFactory.initialize (this);
//Теперь можно создать MapView.
setContentView (R.layout.map);
super.onCreate (savedInstanceState);
mapView = (MapView) findViewById (R .id.mapview);
//И чтобы показать, что с этим можно сделать, перемещаем камеру в центр Санкт-Петербурга.
mapView.getMap (). move (
new CameraPosition (TARGET_LOCATION, 17.0f, 0.0f, 0.0f),
новая анимация (Animation.Type.SMOOTH, 1),
null);
mapView.getMap (). addTapListener (this);
mapView.getMap (). addInputListener (this) ;
}
@Override
protected void onStop () {
//Вызов активности onStop должен быть передан как в MapView, так и в экземпляр MapKit.
mapView.onStop ();
MapKitFactory.getInstance (). onStop ();
super.onStop ();
}
@Override
protected void onStart () {
//Вызов Activity onStart должен быть передан как в MapView, так и в экземпляр MapKit.
d> super.onStart ();
MapKitFactory.getInstance (). onStart ();
mapView.onStart ();
}
@Override
public boolean onObjectTap (@NonNull GeoObjectTapEvent geoObjectTapEvent) {
final GeoObjectSelectionMetadata selectionMetadata = geoObjectTapEvent
.getGeoObject ()
.getMetadataContainer ()
.getItem (GeoObjectSelectionMetadata.class);
if (selectionMetadata! = null) {
mapView.getMap (). selectGeoObject (selectionMetadata.getId (), selectionMetadata. getLayerId ());
}
return selectionMetadata! = null;
}
@Override
public void onMapTap (@NonNull Map map, @NonNull Point point) {
mapView.getMap ( ) .deselectGeoObject ();
}
@Override
public void onMapLongTap (@NonNull Map map, @NonNull Point point) {
}
}
Оцените статью
clickpad.ru
Добавить комментарий