Методы Обратного Вызова Для Отслеживания Дохода От Рекламы
Appodeal SDK позволяет вам получить данные о доходе от рекламы на уровне показа с помощью Ad Revenue Callbacks. Эти данные включают в себя такую информацию, как название рекламной сети, доход, тип рекламы, и т.д.
Данные о доходе от рекламы на уровне показа могут использоваться для отправки в сторонние SDK, такие как Firebase, для всех поддерживаемых рекламных сетей.
Если вы уже интегрировали Firebase, который включен в Appodeal SDK, используя инструкцию, то данные о доходе от рекламы будут отправлены автоматически, можете почитать подробнее здесь во втором шаге.
Appodeal SDK 3.0.1+
Реализация Методов Обратного Вызова
- Swift
- Objective-C
extension YourViewController: UIViewController, AppodealAdRevenueDelegate {
override func viewDidLoad() {
super.viewDidLoad()
Appodeal.setAdRevenueDelegate(self)
}
func didReceiveRevenue(forAd ad: AppodealAdRevenue) {
let parameters: [String: Any] = [
"network": ad.networkName,
"ad_unit": ad.adUnitName,
"placement": ad.placement,
"revenue_precision": ad.revenuePrecision,
"demand": ad.demandSource,
"currency": ad.currency,
"revenue": ad.revenue,
"ad_type": ad.adTypeString
]
}
}
@interface YourViewController () <AppodealAdRevenueDelegate>
@end
@implementation YourViewController
- (void)viewDidLoad {
[super viewDidLoad];
[Appodeal setAdRevenueDelegate:self];
}
- (void)didReceiveRevenueForAd:(id<AppodealAdRevenue>)ad {
NSDictionary<NSString *, id> *parameters = @{
@"network": ad.networkName,
@"ad_unit": ad.adUnitName,
@"placement": ad.placement,
@"revenue_precision": ad.revenuePrecision,
@"demand": ad.demandSource,
@"currency": ad.currency,
@"revenue": @(ad.revenue),
@"ad_type": ad.adTypeString
};
}
@end
Для получения дохода от рекламы на уровне показов от Admob вам также необходимо включить эту настройку в вашей учетной записи AdMob.
Перейдите в Admob Account Settings → Account → включите Impression-level ad revenue переключатель.
Описание Appodeal Ad Revenue
AppodealAdRevenue
- представляет информацию о доходах.
Параметр | Тип | Описание |
---|---|---|
networkName | String | Имя рекламной сети. |
demandSource | String | Имя источника спроса и имя участника торгов в случае показа в результате торгов в реальном времени. |
adUnitName | String | Уникальное название рекламного блока. |
placement | String | Имя плейсмента в Appodeal. |
revenue | Double | Сумма дохода от объявления или 0, если его не существует. |
adType | Int | Тип рекламы Appodeal. |
adTypeString | String | Тип рекламы Appodeal в строковом представлении. |
platform | String | Имя платформы Appodeal. |
currency | String | Текущая валюта, поддерживаемая Appodeal (USD) в строковом представлении. |
revenuePrecision | String | Точность дохода. |
exact
- программный доход - это итоговая цена аукционаpublisher_defined
- доход от кросс-промо кампанийestimated
- доход на основе исторических данных сети eCPM и pricefloorundefined
- сумма дохода неопределена
Вариант Использования
Если вы интегрировали аналитику, например Firebase, используя это руководство с Appodeal, то никаких дополнительных действий не требуется.
Если вы используете в проекте свою собственную аналитику, то воспользуйтесь примером ниже:
- Swift
- Objective-C
extension YourViewController: UIViewController, AppodealAdRevenueDelegate {
override func viewDidLoad() {
super.viewDidLoad()
Appodeal.setAdRevenueDelegate(self)
}
func didReceiveRevenue(forAd ad: AppodealAdRevenue) {
let parameters: [String: Any] = [
"network": ad.networkName,
"ad_unit": ad.adUnitName,
"placement": ad.placement,
"revenue_precision": ad.revenuePrecision,
"demand": ad.demandSource,
"currency": ad.currency,
"revenue": ad.revenue,
"ad_type": ad.adTypeString
]
//AppsFlyer
let adRevenueParams:[AnyHashable: Any] = [
kAppsFlyerAdRevenueAdUnit : ad.adUnitName,
kAppsFlyerAdRevenueAdType : ad.adTypeString
]
AppsFlyerAdRevenue.shared().logAdRevenue(
monetizationNetwork: ad.networkName,
mediationNetwork: MediationNetworkType.appodeal,
eventRevenue: ad.revenue,
revenueCurrency: ad.currency,
additionalParameters: adRevenueParams
)
//Adjust
let adRevenue = ADJAdRevenue(source: ADJAdRevenueSourcePublisher)
adRevenue.setRevenue(ad.revenue, currency: ad.currency)
adRevenue.adRevenueUnit(ad.adUnitName)
adRevenue.adRevenueNetwork(ad.networkName)
Adjust.trackAdRevenue(adRevenue)
//Firebase
Analytics.logEvent(AnalyticsEventAdImpression, parameters: [
AnalyticsParameterAdFormat: ad.adTypeString,
AnalyticsParameterAdSource: ad.networkName,
AnalyticsParameterAdUnitName: ad.adUnitName,
AnalyticsParameterAdCurrency: ad.currency,
AnalyticsParameterValue: ad.revenue
])
}
}
@interface YourViewController () <AppodealAdRevenueDelegate>
@end
@implementation YourViewController
- (void)viewDidLoad {
[super viewDidLoad];
[Appodeal setAdRevenueDelegate:self];
}
- (void)didReceiveRevenueForAd:(id<AppodealAdRevenue>)ad {
NSDictionary<NSString *, id> *parameters = @{
@"network": ad.networkName,
@"ad_unit": ad.adUnitName,
@"placement": ad.placement,
@"revenue_precision": ad.revenuePrecision,
@"demand": ad.demandSource,
@"currency": ad.currency,
@"revenue": @(ad.revenue),
@"ad_type": ad.adTypeString
};
//AppsFlyer
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
dictionary[kAppsFlyerAdRevenueAdUnit] = ad.adUnitName
dictionary[kAppsFlyerAdRevenueAdType] = ad.adTypeString
[[AppsFlyerAdRevenue shared] logAdRevenueWithMonetizationNetwork:ad.networkName
mediationNetwork:AppsFlyerAdRevenueMediationNetworkTypeAppodeal
eventRevenue:ad.revenue
revenueCurrency:ad.currency
additionalParameters:dictionary];
//Adjust
ADJAdRevenue *adRevenue = [ADJAdRevenue alloc initWithSource: ADJAdRevenueSourcePublisher];
[adRevenue setRevenue:ad.revenue currency:ad.currency];
[adRevenue setAdRevenueUnit:ad.adUnitName];
[adRevenue setAdRevenueNetwork:ad.networkName];
[Adjust trackAdRevenue:adRevenue];
//Firebase
[FIRAnalytics logEventWithName:kFIREventAdImpression
parameters:@{
kFIRParameterAdFormat:ad.adTypeString,
kFIRParameterAdSource:ad.networkName,
kFIRParameterAdUnitName:ad.adUnitName,
kFIRParameterCurrency:ad.currency,
kFIRParameterValue:ad.revenue,
}];
}
@end