При возникновении показа Google Mobile Ads SDK вызывает обработчик платных событий и передает связанные с ним данные о доходах. Реализуя этот обработчик, вы можете использовать данные для расчета жизненной ценности пользователя или пересылать данные в другие соответствующие системы.
Это руководство призвано помочь вам реализовать сбор данных LTV в вашем приложении iOS.
Предварительные условия
- Убедитесь, что вы включили функцию дохода от рекламы на уровне показов в пользовательском интерфейсе AdMob.
- Импортируйте Google Mobile Ads SDK 9.10.0 или более поздней версии.
- Заполните руководство по началу работы .
Прежде чем вы сможете получать доход от рекламы на уровне показов, вам необходимо внедрить хотя бы один формат рекламы:
Реализация платного обработчика событий
Каждый формат объявления имеет свойство paidEventHandler
типа GADPaidEventHandler
. В течение жизненного цикла рекламного события Google Mobile Ads SDK отслеживает события показа и вызывает обработчик с полученным значением.
Быстрый
class ViewController: UIViewController, GADFullScreenContentDelegate {
var rewardedAd: GADRewardedAd?
func requestRewardedAd() {
GADRewardedAd.load(
withAdUnitID: "AD_UNIT_ID", request: GADRequest()
) { (ad, error) in
if let error = error {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
return
}
if let ad = ad {
self.rewardedAd = ad
self.rewardedAd?.paidEventHandler = { adValue in
// TODO: Send the impression-level ad revenue information to your preferred analytics
// server directly within this callback.
// Extract the impression-level ad revenue data.
let value = adValue.value
let precision = adValue.precision
let currencyCode = adValue.currencyCode
// Get the ad unit ID.
let adUnitId = ad.adUnitID
let responseInfo = ad.responseInfo
let loadedAdNetworkResponseInfo = responseInfo?.loadedAdNetworkResponseInfo
let adSourceId = loadedAdNetworkResponseInfo?.adSourceID
let adSourceInstanceId = loadedAdNetworkResponseInfo?.adSourceInstanceID
let adSourceInstanceName = loadedAdNetworkResponseInfo?.adSourceInstanceName
let adSourceName = loadedAdNetworkResponseInfo?.adSourceName
let mediationGroupName = responseInfo?.extrasDictionary["mediation_group_name"]
let mediationABTestName = responseInfo?.extrasDictionary["mediation_ab_test_name"]
let mediationABTestVariant = responseInfo?.extrasDictionary["mediation_ab_test_variant"]
}
}
}
}
}
Цель-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)requestRewardedAd {
__weak ViewController *weakSelf = self;
GADRequest *request = [GADRequest request];
[GADRewardedAd
loadWithAdUnitID:@"AD_UNIT_ID"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull value){
ViewController *strongSelf = weakSelf;
// TODO: Send the impression-level ad revenue information to your preferred analytics
// server directly within this callback.
// Extract the impression-level ad revenue data.
NSDecimalNumber *value; = value.value;
NSString *currencyCode = value.currencyCode;
GADAdValuePrecision precision = value.precision;
// Get the ad unit ID.
NSString *adUnitId = strongSelf.rewardedAd.adUnitID;
GADAdNetworkResponseInfo *loadedAdNetworkResponseInfo =
strongSelf.rewardedAd.responseInfo.loadedAdNetworkResponseInfo;
NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
NSString *adSourceID = loadedAdNetworkResponseInfo.adSourceID;
NSString *adSourceInstanceName = loadedAdNetworkResponseInfo.adSourceInstanceName;
NSString *adSourceInstanceID = loadedAdNetworkResponseInfo.adSourceInstanceID;
NSDictionary<NSString *, id> *extras = strongSelf.rewardedAd.responseInfo.extrasDictionary;
NSString *mediationGroupName = extras["mediation_group_name"];
NSString *mediationABTestName = extras["mediation_ab_test_name"];
NSString *mediationABTestVariant = extras["mediation_ab_test_variant"];
};
]};
}
Дополнительную информацию о победившем источнике объявления см. в разделе Получение информации об ответе на объявление .
Интеграция с партнерами по атрибуции приложений (AAP)
Полную информацию о пересылке данных о доходах от рекламы на аналитические платформы можно найти в руководстве партнера:
Партнерский SDK |
---|
Регулировать |
ПриложенияФлаер |
Единственное число |
Тенджин |
Лучшие практики внедрения
- Установите обработчик сразу после создания объекта рекламы или получения доступа к нему, и обязательно перед показом рекламы. Это гарантирует, что вы не пропустите ни одного платного обратного вызова событий.
- Отправьте информацию о платном событии на предпочитаемый аналитический сервер сразу же во время вызова метода
paidEventHandler
. Это гарантирует, что вы случайно не отбросите обратные вызовы и избежите расхождений в данных.
GADAdValue
GADAdValue
– это класс, который представляет денежную стоимость, полученную за рекламу, включая код валюты значения и его тип точности, закодированный, как показано ниже.
GADAdValuePrecision | Описание |
---|---|
GADAdValuePrecisionUnknown | Ценность объявления неизвестна. Он возвращается, когда пингбэк LTV включен, но доступных данных недостаточно. |
GADAdValuePrecisionEstimated | Ценность объявления, рассчитанная на основе агрегированных данных. |
GADAdValuePrecisionPublisherProvided | Издатель предоставил ценность объявления, например вручную установил цену за тысячу показов в группе медиации. |
GADAdValuePrecisionPrecise | Точная стоимость, уплаченная за это объявление. |
Тестовые показы из источников объявлений с назначением ставок
После того как событие дохода от рекламы на уровне показа происходит для источника объявлений с назначением ставок посредством тестового запроса, вы получаете только следующие значения:
-
GADAdValuePrecisionUnknown
: указывает тип точности.
-
0
: указывает ценность объявления.
Раньше вы могли видеть тип точности как значение, отличное от GADAdValuePrecisionUnknown
, и значение объявления, превышающее 0
.
Подробную информацию об отправке запроса тестового объявления см. в разделе Включение тестовых устройств .