Отправка ECommerce-событий на Flutter

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

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

Шаг 1. Создайте тестовое приложение в AppMetrica

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

Чтобы добавить еще одно приложение, нажмите кнопку Добавить приложение в выпадающем списке в интерфейсе AppMetrica.

Шаг 2. Настройте отправку ECommerce-событий на тестовый API key

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

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

Открытие страницы
Map<String, String> payload = {
    "configuration": "landscape",
    "full_screen": "true",
};
// Creating a screen object.
ECommerceScreen screen = ECommerceScreen(
    name: "ProductCardActivity",              // Optional.
    searchQuery: "даниссимо кленовый сироп",  // Optional.
    payload: payload,                         // Optional.
    categoriesPath: ["Акции","Красная цена"]  // Optional.
);
ECommerceEvent showScreenEvent = ECommerce.showScreenEvent(screen);
// Sending an e-commerce event.
AppMetrica.getReporter("Testing API key").reportECommerce(showScreenEvent);
Просмотр карточки товара
Map<String, String> payload = {
    "configuration": "landscape",
    "full_screen": "true"
};
// Creating a screen object.
ECommerceScreen screen = ECommerceScreen(
    name: "ProductCardActivity", // Optional.
    searchQuery: "даниссимо кленовый сироп",  // Optional.
    payload: payload,  // Optional.
    categoriesPath: ["Акции","Красная цена"]  // Optional.
);
ECommerceAmount amount = ECommerceAmount(amount: Decimal.parse('4.53'), currency: "USD");
// Creating an actualPrice object.
ECommercePrice actualPrice = ECommercePrice(fiat: amount,
    internalComponents: [  // Optional.
    ECommerceAmount(amount: Decimal.parse('30_570_000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),
]);

// Creating an originalPrice object.
ECommercePrice originalPrice = ECommercePrice(fiat: ECommerceAmount(amount: Decimal.parse('5.78'), currency: "USD"),
internalComponents: [ // Optional.
    ECommerceAmount(amount: Decimal.parse('30570000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),
]);
// Creating a product object.
ECommerceProduct product = ECommerceProduct(
sku: "779213",
name: "Продукт творожный «Даниссимо» 5.9%, 130 г.",  // Optional.
actualPrice: actualPrice, // Optional.
originalPrice: originalPrice, // Optional.
promocodes: ["BT79IYX", "UT5412EP"],  // Optional.
payload: payload,    // Optional.
categoriesPath: ["Продукты", "Молочные продукты", "Йогурты"]  // Optional.
);

ECommerceEvent showProductCardEvent = ECommerce.showProductCardEvent(product, screen);
// Sending an e-commerce event.
AppMetrica.getReporter("Testing API key").reportECommerce(showProductCardEvent);
Просмотр страницы товара
Map<String, String> payload = {
    "configuration": "landscape",
    "full_screen": "true"
};
// Creating a screen object.
ECommerceScreen screen = ECommerceScreen(
    name: "ProductCardActivity", // Optional.
    searchQuery: "даниссимо кленовый сироп",  // Optional.
    payload: payload,  // Optional.
    categoriesPath: ["Акции","Красная цена"]  // Optional.
);
ECommerceAmount amount = ECommerceAmount(amount: Decimal.parse('4.53'), currency: "USD");
// Creating an actualPrice object.
ECommercePrice actualPrice = ECommercePrice(fiat: amount,
    internalComponents: [  // Optional.
    ECommerceAmount(amount: Decimal.parse('30_570_000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),
]);

// Creating an originalPrice object.
ECommercePrice originalPrice = ECommercePrice(fiat: ECommerceAmount(amount: Decimal.parse('5.78'), currency: "USD"),
internalComponents: [ // Optional.
    ECommerceAmount(amount: Decimal.parse('30570000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),`
]);
// Creating a product object.
ECommerceProduct product = ECommerceProduct(
sku: "779213",
name: "Продукт творожный «Даниссимо» 5.9%, 130 г.",  // Optional.
actualPrice: actualPrice, // Optional.
originalPrice: originalPrice, // Optional.
promocodes: ["BT79IYX", "UT5412EP"],  // Optional.
payload: payload,    // Optional.
categoriesPath: ["Продукты", "Молочные продукты", "Йогурты"]  // Optional.
);

ECommerceEvent showProductDetailsEvent = ECommerce.showProductDetailsEvent(product, screen);
// Sending an e-commerce event.
AppMetrica.getReporter("Testing API key").reportECommerce(showProductDetailsEvent);
Добавление или удаление товара из корзины
Map<String, String> payload = {
    "configuration": "landscape",
    "full_screen": "true"
  };
// Creating a screen object.
ECommerceScreen screen = ECommerceScreen(
    name: "ProductCardActivity", // Optional.
    searchQuery: "даниссимо кленовый сироп",  // Optional.
    payload: payload,  // Optional.
    categoriesPath: ["Акции","Красная цена"]  // Optional.
);
ECommerceAmount amount = ECommerceAmount(amount: Decimal.parse('4.53'), currency: "USD");
// Creating an actualPrice object.
ECommercePrice actualPrice = ECommercePrice(fiat: amount,
    internalComponents: [  // Optional.
    ECommerceAmount(amount: Decimal.parse('30570000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),
    ]);

// Creating an originalPrice object.
ECommercePrice originalPrice = ECommercePrice(fiat: ECommerceAmount(amount: Decimal.parse('5.78'), currency: "USD"),
    internalComponents: [ // Optional.
    ECommerceAmount(amount: Decimal.parse('30570000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),
    ]);
// Creating a product object.
ECommerceProduct product = ECommerceProduct(
    sku: "779213",
    name: "Продукт творожный «Даниссимо» 5.9%, 130 г.",  // Optional.
    actualPrice: actualPrice, // Optional.
    originalPrice: originalPrice, // Optional.
    promocodes: ["BT79IYX", "UT5412EP"],  // Optional.
    payload: payload,    // Optional.
    categoriesPath: ["Продукты", "Молочные продукты", "Йогурты"]  // Optional.
);
ECommerceReferrer referrer = ECommerceReferrer(
    type: "button", // Optional.
    identifier: "76890", // Optional.
    screen: screen // Optional.
);
// Creating a cartItem object.
ECommerceCartItem addedItems1 = ECommerceCartItem(
    product: product,
    revenue: actualPrice,
    quantity: Decimal.parse("1.0"),
    referrer: referrer  // Optional.
);

ECommerceEvent addCartItemEvent = ECommerce.addCartItemEvent(addedItems1);
// Sending an e-commerce event.
AppMetrica.getReporter("Testing API key").reportECommerce(addCartItemEvent);
ECommerceEvent removeCartItemEvent = ECommerce.removeCartItemEvent(addedItems1);
// Sending an e-commerce event.
AppMetrica.getReporter("Testing API key").reportECommerce(removeCartItemEvent);
Начало оформления и завершение покупки
Map<String, String> payload = {
    "configuration": "landscape",
    "full_screen": "true"
};
// Creating a screen object.
ECommerceScreen screen = ECommerceScreen(
    name: "ProductCardActivity", // Optional.
    searchQuery: "даниссимо кленовый сироп",  // Optional.
    payload: payload,  // Optional.
    categoriesPath: ["Акции","Красная цена"]  // Optional.
);
ECommerceAmount amount = ECommerceAmount(amount: Decimal.parse('4.53'), currency: "USD");
// Creating an actualPrice object.
ECommercePrice actualPrice = ECommercePrice(fiat: amount,
    internalComponents: [  // Optional.
    ECommerceAmount(amount: Decimal.parse('30570000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),
    ]);

// Creating an originalPrice object.
ECommercePrice originalPrice = ECommercePrice(fiat: ECommerceAmount(amount: Decimal.parse('5.78'), currency: "USD"),
    internalComponents: [ // Optional.
    ECommerceAmount(amount: Decimal.parse('30570000'), currency: "wood"),
    ECommerceAmount(amount: Decimal.parse('26.89'), currency: "iron"),
    ECommerceAmount(amount: Decimal.parse('5.1'), currency: "gold"),
    ]);
// Creating a product object.
ECommerceProduct product = ECommerceProduct(
    sku: "779213",
    name: "Продукт творожный «Даниссимо» 5.9%, 130 г.",  // Optional.
    actualPrice: actualPrice, // Optional.
    originalPrice: originalPrice, // Optional.
    promocodes: ["BT79IYX", "UT5412EP"],  // Optional.
    payload: payload,    // Optional.
    categoriesPath: ["Продукты", "Молочные продукты", "Йогурты"]  // Optional.
);
ECommerceReferrer referrer = ECommerceReferrer(
    type: "button", // Optional.
    identifier: "76890", // Optional.
    screen: screen // Optional.
);
// Creating a cartItem object.
ECommerceCartItem addedItems1 = ECommerceCartItem(
    product: product,
    revenue: actualPrice,
    quantity: Decimal.parse("1.0"),
    referrer: referrer  // Optional.
);
// Creating an order object.
ECommerceOrder order = ECommerceOrder(
    identifier: "88528768",
    items:[addedItems1],
    payload: payload // Optional.
);
ECommerceEvent beginCheckoutEvent = ECommerce.beginCheckoutEvent(order);
// Sending an e-commerce event.
AppMetrica.getReporter("Testing API key").reportECommerce(beginCheckoutEvent);
ECommerceEvent purchaseEvent = ECommerce.purchaseEvent(order);
// Sending an e-commerce event.
AppMetrica.getReporter("Testing API key").reportECommerce(purchaseEvent);

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

Совершите тестовые покупки в приложении. Через некоторое время в интерфейсе AppMetrica проверьте отчет "Анализ покупок". Убедитесь, что ECommerce-события отображаются в отчете.

Подробнее об отчете в разделе Анализ покупок.

Шаг 4. Настройте отправку ECommerce на основной API Key

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

Чтобы отправить объект ECommerceEvent на основной API key, используйте метод AppMetrica.reportECommerce(ECommerceEvent event);:

// ...
// Sending an e-commerce event.
AppMetrica.reportECommerce(ecommerceEvent);

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

Написать в службу поддержки