Методы Обратного Вызова Для Отслеживания Дохода От Рекламы
Appodeal SDK позволяет вам получить данные о доходе от рекламы на уровне показа с помощью Ad Revenue Callbacks. Эти данные включают в себя такую информацию, как название рекламной сети, доход, тип рекламы, и т.д.
Данные о доходе от рекламы на уровне показа могут использоваться для отправки в сторонние SDK, такие как Firebase, для всех поддерживаемых рекламных сетей.
Если вы уже интегрировали Firebase, который включен в Appodeal SDK, используя инструкцию, то данные о доходе от рекламы будут отправлены автоматически, можете почитать подробнее здесь во втором шаге.
Appodeal SDK 3.0.1+
Реализация Методов Обратного Вызова
- Kotlin
- Java
Appodeal.setAdRevenueCallbacks(object : AdRevenueCallbacks {
override fun onAdRevenueReceive(revenueInfo: RevenueInfo) {
// Вызывается всякий раз, когда SDK получает информацию о доходах по рекламе.
}
}
Appodeal.setAdRevenueCallbacks(new AdRevenueCallbacks() {
@Override
public void onAdRevenueReceive(@NotNull RevenueInfo revenueInfo) {
// Вызывается всякий раз, когда SDK получает информацию о доходах по рекламе.
}
});
Вcе callback методы вызываются в главном потоке.
Для получения дохода от рекламы на уровне показов от Admob вам также необходимо включить эту настройку в вашей учетной записи AdMob.
Перейдите в Admob Account Settings → Account → включите Impression-level ad revenue переключатель.
Описание Appodeal Ad Revenue
RevenueInfo
- представляет информацию о доходах от рекламных сетей.
Параметр | Тип | Описание |
---|---|---|
networkName | String | Имя ре кламной сети, гарантированно не пустое. |
demandSource | String | Имя источника спроса и имя участника торгов в случае показа в результате торгов в реальном времени, гарантированно не пустое. |
adUnitName | String | Уникальное название рекламного блока гарантированно не пустое. |
placement | String | Имя плейсмента в Appodeal гарантированно не пустое. |
revenue | Double | Сумма дохода от объявления или 0, если его не существует. |
adType | Int | Тип рекламы Appodeal. |
adTypeString | String | Тип рекламы Appodeal в строковом представлении. |
platform | String | Название платформы Appodeal. |
revenueCurrency | RevenueCurrency | Текущая валюта, поддерживаемая Appodeal (USD). |
currency | String | Текущая валюта, поддерживаемая Appodeal (USD) в строковом представлении. |
revenuePrecision | String | Точность дохода. |
exact
- программный доход - это итоговая цена аукциона;publisher_defined
- доход от кросс-промо кампаний;estimated
- доход на основе исторических данных сети eCPM и pricefloors;undefined
**` - сумма дохода не определена.
Вариант использования
Если вы интегрировали аналитику, например Firebase, используя это руководство с Appodeal, то никаких дополнительных действий не требуется.
Если вы используете в проекте свою собственную аналитику, то воспользуйтесь примером ниже:
- Kotlin
- Java
override fun onAdRevenueReceive(revenueInfo: RevenueInfo) {
// AppsFlyer
val customParams = mapOf(
Scheme.AD_UNIT to revenueInfo.adUnitName,
Scheme.AD_TYPE to revenueInfo.adTypeString,
)
AppsFlyerAdRevenue.logAdRevenue(
revenueInfo.networkName,
MediationNetwork.appodeal,
Currency.getInstance(Locale.US),
revenueInfo.revenue,
customParams
)
// Adjust
val adRevenue = AdjustAdRevenue(AdjustConfig.AD_REVENUE_SOURCE_PUBLISHER).apply {
setRevenue(revenueInfo.revenue, revenueInfo.currency)
setAdRevenueNetwork(revenueInfo.networkName)
setAdRevenueUnit(revenueInfo.adUnitName)
}
Adjust.trackAdRevenue(adRevenue)
// Firebase
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) {
param(FirebaseAnalytics.Param.AD_PLATFORM, revenueInfo.platform)
param(FirebaseAnalytics.Param.SOURCE, revenueInfo.networkName)
param(FirebaseAnalytics.Param.AD_FORMAT, revenueInfo.adTypeString)
param(FirebaseAnalytics.Param.AD_UNIT_NAME, revenueInfo.adUnitName)
param(FirebaseAnalytics.Param.CURRENCY, revenueInfo.currency)
param(FirebaseAnalytics.Param.VALUE, revenueInfo.revenue)
}
}
@Override
public void onAdRevenueReceive(@NotNull RevenueInfo revenueInfo) {
// AppsFlyer
Map<String, String> customParams = new HashMap<>();
customParams.put(Scheme.AD_UNIT, revenueInfo.getAdUnitName());
customParams.put(Scheme.AD_TYPE, revenueInfo.getAdTypeString());
AppsFlyerAdRevenue.logAdRevenue(
revenueInfo.getNetworkName(),
MediationNetwork.appodeal,
Currency.getInstance(Locale.US),
revenueInfo.getRevenue(),
customParams
);
// Adjust
AdjustAdRevenue adRevenue = new AdjustAdRevenue(AdjustConfig.AD_REVENUE_SOURCE_PUBLISHER)
adRevenue.setRevenue(revenueInfo.getRevenue(), revenueInfo.getCurrency());
adRevenue.setAdRevenueNetwork(revenueInfo.getNetworkName());
adRevenue.setAdRevenueUnit(revenueInfo.getAdUnitName());
Adjust.trackAdRevenue(adRevenue);
// Firebase
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, revenueInfo.getPlatform());
bundle.putString(FirebaseAnalytics.Param.SOURCE, revenueInfo.getNetworkName());
bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, revenueInfo.getAdTypeString());
bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, revenueInfo.getAdUnitName());
bundle.putString(FirebaseAnalytics.Param.CURRENCY, RevenueInfo.getCurrency());
bundle.putString(FirebaseAnalytics.Param.VALUE, RevenueInfo.getRevenue());
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle);
}