Методы Обратного Вызова Для Отслеживания Дохода От Рекламы
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 и pricefloor
- undefined- сумма дохода неопределена
Вариант Использования
Если вы интегрировали аналитику, например 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