При показе рекламы Google Mobile Ads SDK вызывает обработчик платных событий, предоставляя связанные с ним данные о доходе. Реализовав этот обработчик, вы сможете использовать эти данные для расчета общей ценности пользователя или пересылать их в другие соответствующие системы.
Это руководство призвано помочь вам реализовать сбор данных LTV в вашем приложении iOS.
Предпосылки
- Убедитесь, что вы включили функцию расчета дохода от рекламы на уровне показов в пользовательском интерфейсе AdMob.
- Импортируйте Google Mobile Ads SDK 9.10.0 или выше.
- Заполните руководство по началу работы .
Прежде чем вы сможете получать доход от рекламы на уровне показов, вам необходимо реализовать хотя бы один формат рекламы:
Реализовать платный обработчик событий
У каждого формата рекламы есть свойство paidEventHandler
типа GADPaidEventHandler
. В течение жизненного цикла события рекламы Google Mobile Ads SDK отслеживает события показов и вызывает обработчик с полученным значением.
Быстрый
class ViewController: UIViewController, FullScreenContentDelegate {
var rewardedAd: RewardedAd?
func requestRewardedAd() {
RewardedAd.load(
with: "AD_UNIT_ID", request: Request()
) { (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?.extras["mediation_group_name"]
let mediationABTestName = responseInfo?.extras["mediation_ab_test_name"]
let mediationABTestVariant = responseInfo?.extras["mediation_ab_test_variant"]
}
}
}
}
}
Objective-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"];
};
]};
}
Определите название источника рекламы для пользовательского события
Для источников рекламы на основе пользовательских событий свойство adSourceName
содержит имя источника рекламы Custom event
. Если вы используете несколько пользовательских событий, имя источника рекламы недостаточно детализировано, чтобы различать их. Чтобы найти конкретное пользовательское событие, выполните следующие действия:
- Получите свойство
adNetworkClassName
. - Задайте уникальное название источника рекламы.
В следующем примере задается уникальное имя источника рекламы для пользовательского события:
Быстрый
func uniqueAdSourceName(for loadedAdNetworkResponseInfo: AdNetworkResponseInfo) -> String {
var adSourceName: String = loadedAdNetworkResponseInfo.adSourceName ?? ""
if adSourceName == "Custom Event" {
if loadedAdNetworkResponseInfo.adNetworkClassName
== "MediationExample.SampleCustomEventSwift"
{
adSourceName = "Sample Ad Network (Custom Event)"
}
}
return adSourceName
}
Objective-C
- (NSString *)uniqueAdSourceNameForAdNetworkResponseInfo:
(GADAdNetworkResponseInfo *)loadedAdNetworkResponseInfo {
NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
if ([adSourceName isEqualToString:@"Custom Event"]) {
if ([loadedAdNetworkResponseInfo.adNetworkClassName isEqualToString:@"SampleCustomEvent"]) {
adSourceName = @"Sample Ad Network (Custom Event)";
}
}
return adSourceName;
}
Дополнительную информацию о выигрышном источнике рекламы см. в разделе Получение информации об отклике на рекламу .
Интеграция с партнерами по атрибуции приложений (AAP)
Полную информацию о передаче данных о доходах от рекламы на аналитические платформы см. в руководстве партнера:
Партнерский SDK |
---|
Регулировать |
AppsFlyer |
Единственное число |
Тенджин |
Лучшие практики внедрения
- Установите обработчик сразу после создания объекта рекламы или получения к нему доступа, но обязательно перед показом рекламы. Это гарантирует, что вы не пропустите ни одного платного обратного вызова событий.
- Отправляйте информацию о платном событии на выбранный вами аналитический сервер немедленно при вызове метода
paidEventHandler
. Это гарантирует отсутствие случайной потери обратных вызовов и предотвращает расхождения данных.
GADAdValue
GADAdValue
— это класс, представляющий денежную стоимость, полученную за рекламу, включая код валюты стоимости и ее тип точности, закодированный следующим образом.
GADAdValuePrecision | Описание |
---|---|
GADAdValuePrecisionUnknown | Неизвестная ценность объявления. Возвращается, если включена функция pingback LTV, но недостаточно данных. |
GADAdValuePrecisionEstimated | Ценность объявления, рассчитанная на основе агрегированных данных. |
GADAdValuePrecisionPublisherProvided | Издатель предоставил ценность рекламы, например, ручную установку CPM в группе посредничества. |
GADAdValuePrecisionPrecise | Точная стоимость этой рекламы. |
Тестовые показы из источников рекламы с торгами
После того, как для источника объявлений с ставкой через тестовый запрос происходит событие дохода от рекламы на уровне показа, вы получаете только следующие значения:
-
GADAdValuePrecisionUnknown
: указывает тип точности.
-
0
: указывает ценность объявления.
Ранее вы могли видеть тип точности как значение, отличное от GADAdValuePrecisionUnknown
, и значение объявления больше 0
.
Подробную информацию об отправке тестового запроса на рекламу см. в разделе Включение тестовых устройств .