Отправка ECommerce-событий на Android
Подробнее о работе репортера в разделе Примеры использования.
Шаг 1. Создайте тестовое приложение в AppMetrica
Заполните параметры приложения: ссылка в магазине приложений (если приложение еще не опубликовано — оставьте поле пустым), название, категория, часовой пояс для построения отчетов.
Чтобы добавить еще одно приложение, нажмите кнопку Добавить приложение в выпадающем списке в интерфейсе AppMetrica.
Шаг 2. Настройте отправку ECommerce-событий на тестовый API key
Для различных действий пользователя есть соответствующие типы ECommerce-событий. Чтобы создать конкретный тип события, используйте нужный метод класса ECommerceEvent
.
Ниже приведены примеры отправки конкретных типов событий (Java):
Map<String, String> payload = new HashMap<>();
payload.put("configuration", "landscape");
payload.put("full_screen", "true");
// Creating a screen object.
ECommerceScreen screen = new ECommerceScreen()
.setCategoriesPath(Arrays.asList( // Optional.
"Акции",
"Красная цена"
))
.setName("ProductCardActivity") // Optional.
.setSearchQuery("даниссимо кленовый сироп") // Optional.
.setPayload(payload); // Optional.
ECommerceEvent showScreenEvent = ECommerceEvent.showScreenEvent(screen);
// Sending an e-commerce event.
YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(showScreenEvent);
Map<String, String> payload = new HashMap<>(); payload.put("configuration", "landscape"); payload.put("full_screen", "true"); // Creating a screen object. ECommerceScreen screen = new ECommerceScreen() .setCategoriesPath(Arrays.asList( // Optional. "Акции", "Красная цена" )) .setName("ProductCardActivity") // Optional. .setSearchQuery("даниссимо кленовый сироп") // Optional. .setPayload(payload); // Optional. // Creating an actualPrice object. ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_570_000, "wood"), new ECommerceAmount(26.89, "iron"), new ECommerceAmount(new BigDecimal(5.1), "gold") )); // Creating an originalPrice object. ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_590_000, "wood"), new ECommerceAmount(26.92, "iron"), new ECommerceAmount(new BigDecimal(5.5), "gold") )); // Creating a product object. ECommerceProduct product = new ECommerceProduct("779213") .setActualPrice(actualPrice) // Optional. .setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional. .setPayload(payload) // Optional. .setOriginalPrice(originalPrice) // Optional. .setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional. .setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional. ECommerceEvent showProductCardEvent = ECommerceEvent.showProductCardEvent(product, screen); // Sending an e-commerce event. YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(showProductCardEvent);
Скопировано
Map<String, String> payload = new HashMap<>(); payload.put("configuration", "landscape"); payload.put("full_screen", "true"); // Creating a screen object. ECommerceScreen screen = new ECommerceScreen() .setCategoriesPath(Arrays.asList( // Optional. "Акции", "Красная цена" )) .setName("ProductCardActivity") // Optional. .setSearchQuery("даниссимо кленовый сироп") // Optional. .setPayload(payload); // Optional. // Creating an actualPrice object. ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_570_000, "wood"), new ECommerceAmount(26.89, "iron"), new ECommerceAmount(new BigDecimal(5.1), "gold") )); // Creating an originalPrice object. ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_590_000, "wood"), new ECommerceAmount(26.92, "iron"), new ECommerceAmount(new BigDecimal(5.5), "gold") )); // Creating a product object. ECommerceProduct product = new ECommerceProduct("779213") .setActualPrice(actualPrice) // Optional. .setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional. .setPayload(payload) // Optional. .setOriginalPrice(originalPrice) // Optional. .setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional. .setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional. // Creating a referrer object. ECommerceReferrer referrer = new ECommerceReferrer() .setType("button") // Optional. .setIdentifier("76890") // Optional. .setScreen(screen); // Optional. ECommerceEvent showProductDetailsEvent = ECommerceEvent.showProductDetailsEvent(product, referrer); // Referrer is optional — can be null. // Sending an e-commerce event. YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(showProductDetailsEvent);
Скопировано
Map<String, String> payload = new HashMap<>(); payload.put("configuration", "landscape"); payload.put("full_screen", "true"); // Creating a screen object. ECommerceScreen screen = new ECommerceScreen() .setCategoriesPath(Arrays.asList( // Optional. "Акции", "Красная цена" )) .setName("ProductCardActivity") // Optional. .setSearchQuery("даниссимо кленовый сироп") // Optional. .setPayload(payload); // Optional. // Creating an actualPrice object. ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_570_000, "wood"), new ECommerceAmount(26.89, "iron"), new ECommerceAmount(new BigDecimal(5.1), "gold") )); // Creating an originalPrice object. ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_590_000, "wood"), new ECommerceAmount(26.92, "iron"), new ECommerceAmount(new BigDecimal(5.5), "gold") )); // Creating a product object. ECommerceProduct product = new ECommerceProduct("779213") .setActualPrice(actualPrice) // Optional. .setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional. .setPayload(payload) // Optional. .setOriginalPrice(originalPrice) // Optional. .setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional. .setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional. // Creating a referrer object. ECommerceReferrer referrer = new ECommerceReferrer() .setType("button") // Optional. .setIdentifier("76890") // Optional. .setScreen(screen); // Optional. // Creating a cartItem object. ECommerceCartItem addedItems1 = new ECommerceCartItem(product, actualPrice, 1.0) .setReferrer(referrer); // Optional. ECommerceEvent addCartItemEvent = ECommerceEvent.addCartItemEvent(addedItems1); // Sending an e-commerce event. YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(addCartItemEvent); ECommerceEvent removeCartItemEvent = ECommerceEvent.removeCartItemEvent(addedItems1); // Sending an e-commerce event. YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(removeCartItemEvent);
Скопировано
Map<String, String> payload = new HashMap<>(); payload.put("configuration", "landscape"); payload.put("full_screen", "true"); // Creating a screen object. ECommerceScreen screen = new ECommerceScreen() .setCategoriesPath(Arrays.asList( // Optional. "Акции", "Красная цена" )) .setName("ProductCardActivity") // Optional. .setSearchQuery("даниссимо кленовый сироп") // Optional. .setPayload(payload); // Optional. // Creating an actualPrice object. ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_570_000, "wood"), new ECommerceAmount(26.89, "iron"), new ECommerceAmount(new BigDecimal(5.1), "gold") )); // Creating an originalPrice object. ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD")) .setInternalComponents(Arrays.asList( // Optional. new ECommerceAmount(30_590_000, "wood"), new ECommerceAmount(26.92, "iron"), new ECommerceAmount(new BigDecimal(5.5), "gold") )); // Creating a product object. ECommerceProduct product = new ECommerceProduct("779213") .setActualPrice(actualPrice) // Optional. .setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional. .setPayload(payload) // Optional. .setOriginalPrice(originalPrice) // Optional. .setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional. .setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional. // Creating a referrer object. ECommerceReferrer referrer = new ECommerceReferrer() .setType("button") // Optional. .setIdentifier("76890") // Optional. .setScreen(screen); // Optional. // Creating a cartItem object. ECommerceCartItem addedItems1 = new ECommerceCartItem(product, actualPrice, 1.0) .setReferrer(referrer); // Optional. // Creating an order object. ECommerceOrder order = new ECommerceOrder("88528768", Arrays.asList(addedItems1)) .setPayload(payload); // Optional. ECommerceEvent beginCheckoutEvent = ECommerceEvent.beginCheckoutEvent(order); // Sending an e-commerce event. YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(beginCheckoutEvent); ECommerceEvent purchaseEvent = ECommerceEvent.purchaseEvent(order); // Sending an e-commerce event. YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(purchaseEvent);
Скопировано
Для различных действий пользователя есть соответствующие типы ECommerce-событий. Чтобы создать конкретный тип события, используйте нужный метод класса ECommerceEvent
.
Ниже приведены примеры отправки конкретных типов событий (Kotlin):
val payload = mapOf("configuration" to "landscape", "full_screen" to "true")
// Creating a screen object.
val screen = ECommerceScreen().apply {
categoriesPath = listOf("Акции", "Красная цена") // Optional.
name = "ProductCardActivity" // Optional.
searchQuery = "даниссимо кленовый сироп" // Optional.
this.payload = payload // Optional.
}
val showScreenEvent = ECommerceEvent.showScreenEvent(screen)
// Sending an e-commerce event.
YandexMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(showScreenEvent)
val payload = mapOf("configuration" to "landscape", "full_screen" to "true") // Creating a screen object. val screen = ECommerceScreen().apply { categoriesPath = listOf("Акции", "Красная цена") // Optional. name = "ProductCardActivity" // Optional. searchQuery = "даниссимо кленовый сироп" // Optional. this.payload = payload // Optional. } // Creating an actualPrice object. val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30570000, "wood"), ECommerceAmount(26.89, "iron"), ECommerceAmount(BigDecimal(5.1), "gold") ) } // Creating an originalPrice object. val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30590000, "wood"), ECommerceAmount(26.92, "iron"), ECommerceAmount(BigDecimal(5.5), "gold") ) } // Creating a product object. val product = ECommerceProduct("779213") .apply { this.actualPrice = actualPrice // Optional. this.originalPrice = originalPrice // Optional. promocodes = listOf("BT79IYX", "UT5412EP") // Optional. name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional. categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional. this.payload = payload // Optional. } val showProductCardEvent = ECommerceEvent.showProductCardEvent(product, screen) // Sending an e-commerce event. YandexMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(showProductCardEvent)
Скопировано
val payload = mapOf("configuration" to "landscape", "full_screen" to "true") // Creating a screen object. val screen = ECommerceScreen().apply { categoriesPath = listOf("Акции", "Красная цена") // Optional. name = "ProductCardActivity" // Optional. searchQuery = "даниссимо кленовый сироп" // Optional. this.payload = payload // Optional. } // Creating an actualPrice object. val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30570000, "wood"), ECommerceAmount(26.89, "iron"), ECommerceAmount(BigDecimal(5.1), "gold") ) } // Creating an originalPrice object. val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30590000, "wood"), ECommerceAmount(26.92, "iron"), ECommerceAmount(BigDecimal(5.5), "gold") ) } // Creating a product object. val product = ECommerceProduct("779213") .apply { this.actualPrice = actualPrice // Optional. this.originalPrice = originalPrice // Optional. promocodes = listOf("BT79IYX", "UT5412EP") // Optional. name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional. categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional. this.payload = payload // Optional. } // Creating a referrer object. val referrer = ECommerceReferrer() .apply { type = "button" // Optional. identifier = "76890" // Optional. this.screen = screen // Optional. } val showProductDetailsEvent = ECommerceEvent.showProductDetailsEvent(product, referrer) // Referrer is optional - can be null. // Sending an e-commerce event. YandexMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(showProductDetailsEvent)
Скопировано
val payload = mapOf("configuration" to "landscape", "full_screen" to "true") // Creating a screen object. val screen = ECommerceScreen().apply { categoriesPath = listOf("Акции", "Красная цена") // Optional. name = "ProductCardActivity" // Optional. searchQuery = "даниссимо кленовый сироп" // Optional. this.payload = payload // Optional. } // Creating an actualPrice object. val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30570000, "wood"), ECommerceAmount(26.89, "iron"), ECommerceAmount(BigDecimal(5.1), "gold") ) } // Creating an originalPrice object. val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30590000, "wood"), ECommerceAmount(26.92, "iron"), ECommerceAmount(BigDecimal(5.5), "gold") ) } // Creating a product object. val product = ECommerceProduct("779213") .apply { this.actualPrice = actualPrice // Optional. this.originalPrice = originalPrice // Optional. promocodes = listOf("BT79IYX", "UT5412EP") // Optional. name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional. categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional. this.payload = payload // Optional. } // Creating a referrer object. val referrer = ECommerceReferrer() .apply { type = "button" // Optional. identifier = "76890" // Optional. this.screen = screen // Optional. } // Creating a cartItem object. val addedItems1 = ECommerceCartItem(product, actualPrice, 1.0) .apply { this.referrer = referrer // Optional. } val addCartItemEvent = ECommerceEvent.addCartItemEvent(addedItems1) // Sending an e-commerce event. YandexMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(addCartItemEvent) val removeCartItemEvent = ECommerceEvent.removeCartItemEvent(addedItems1) // Sending an e-commerce event. YandexMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(removeCartItemEvent)
Скопировано
val payload = mapOf("configuration" to "landscape", "full_screen" to "true") // Creating a screen object. val screen = ECommerceScreen().apply { categoriesPath = listOf("Акции", "Красная цена") // Optional. name = "ProductCardActivity" // Optional. searchQuery = "даниссимо кленовый сироп" // Optional. this.payload = payload // Optional. } // Creating an actualPrice object. val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30570000, "wood"), ECommerceAmount(26.89, "iron"), ECommerceAmount(BigDecimal(5.1), "gold") ) } // Creating an originalPrice object. val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD")) .apply { internalComponents = listOf( // Optional. ECommerceAmount(30590000, "wood"), ECommerceAmount(26.92, "iron"), ECommerceAmount(BigDecimal(5.5), "gold") ) } // Creating a product object. val product = ECommerceProduct("779213") .apply { this.actualPrice = actualPrice // Optional. this.originalPrice = originalPrice // Optional. promocodes = listOf("BT79IYX", "UT5412EP") // Optional. name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional. categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional. this.payload = payload // Optional. } // Creating a referrer object. val referrer = ECommerceReferrer() .apply { type = "button" // Optional. identifier = "76890" // Optional. this.screen = screen // Optional. } // Creating a cartItem object. val addedItems1 = ECommerceCartItem(product, actualPrice, 1.0) .apply { this.referrer = referrer // Optional. } // Creating an order object. val order = ECommerceOrder("88528768", listOf(addedItems1)) .apply { this.payload = payload // Optional. } val beginCheckoutEvent = ECommerceEvent.beginCheckoutEvent(order) // Sending an e-commerce event. YandexMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(beginCheckoutEvent) val purchaseEvent = ECommerceEvent.purchaseEvent(order) // Sending an e-commerce event. YandexMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(purchaseEvent)
Скопировано
Шаг 3. Проверьте отчет тестового приложения
Совершите тестовые покупки в приложении. Через некоторое время в интерфейсе AppMetrica проверьте отчет «Анализ покупок». Убедитесь, что ECommerce-события отображаются в отчете.
Подробнее об отчете в разделе Анализ покупок.
Шаг 4. Настройте отправку ECommerce на основной API Key
После успешного тестирования настройте отправку ECommerce-событий на основной API key.
Чтобы отправить объект ECommerceEvent на основной API key, используйте метод YandexMetrica.reportECommerce(@NonNull ECommerceEvent event).
... // Sending an e-commerce event. YandexMetrica.reportECommerce(ecommerceEvent);
Скопировано
... // Sending an e-commerce event. YandexMetrica.reportECommerce(ecommerceEvent)
Скопировано