События в объявлениях

Из этого руководства вы узнаете, как использовать протоколы GADBannerViewDelegate и GADInterstitialDelegate для прослушивания событий в баннерах и межстраничных объявлениях. Вы сможете получать данные о том, когда объявление было загружено, пришлось ли пользователю закрыть приложение и т. п.

Требования

Полезные ресурсы

Узнайте, как добавлять в проект межстраничные объявления, и используйте протокол GADInterstitialDelegate для прослушивания событий в них.

Реализация протокола GADBannerViewDelegate

Регистрация событий в баннерах

Чтобы регистрировать события в баннерах, задайте в качестве значения для свойства delegate в классе DFPBannerView объект, который реализует протокол GADBannerViewDelegate. Как правило, класс, который реализует баннеры, выступает также в качестве класса-делегата, так что для свойства delegate можно задать значение self.

Objective-C

#import "DFPBannerView.h"
#import "GADBannerViewDelegate.h"

@interface ViewController ()<GADBannerViewDelegate>

@property(nonatomic, strong) DFPBannerView *bannerView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.bannerView = [[DFPBannerView alloc] initWithAdSize:kGADAdSizeBanner];
  self.bannerView.delegate = self;
}

Swift

import UIKit
import GoogleMobileAds

class ViewController: UIViewController, GADBannerViewDelegate {

  var bannerView: DFPBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    bannerView = DFPBannerView(adSize: kGADAdSizeBanner)
    bannerView.delegate = self
  }
}

Реализация методов для регистрации событий в баннерах

Ни один из методов протокола GADBannerViewDelegate не является обязательным, поэтому вы можете выбрать только те, которые нужны. В этом примере добавлены все методы, а также настроена запись сообщения в консоль.

Objective-C

// Tells the delegate an ad request loaded an ad.
- (void)adViewDidReceiveAd:(DFPBannerView *)adView {
  NSLog(@"adViewDidReceiveAd");
}

// Tells the delegate an ad request failed.
- (void)adView:(DFPBannerView *)adView
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"adView:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}

// Tells the delegate that a full screen view will be presented in response
// to the user clicking on an ad.
- (void)adViewWillPresentScreen:(DFPBannerView *)adView {
  NSLog(@"adViewWillPresentScreen");
}

// Tells the delegate that the full screen view will be dismissed.
- (void)adViewWillDismissScreen:(DFPBannerView *)adView {
  NSLog(@"adViewWillDismissScreen");
}

// Tells the delegate that the full screen view has been dismissed.
- (void)adViewDidDismissScreen:(DFPBannerView *)adView {
  NSLog(@"adViewDidDismissScreen");
}

// Tells the delegate that a user click will open another app (such as
// the App Store), backgrounding the current app.
- (void)adViewWillLeaveApplication:(DFPBannerView *)adView {
  NSLog(@"adViewWillLeaveApplication");
}

Swift

// Tells the delegate an ad request loaded an ad.
func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  print("adViewDidReceiveAd")
}

// Tells the delegate an ad request failed.
func adView(bannerView: DFPBannerView!,
    didFailToReceiveAdWithError error: GADRequestError!) {
  print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

// Tells the delegate that a full screen view will be presented in response
// to the user clicking on an ad.
func adViewWillPresentScreen(bannerView: DFPBannerView!) {
  print("adViewWillPresentScreen")
}

// Tells the delegate that the full screen view will be dismissed.
func adViewWillDismissScreen(bannerView: DFPBannerView!) {
  print("adViewWillDismissScreen")
}

// Tells the delegate that the full screen view has been dismissed.
func adViewDidDismissScreen(bannerView: DFPBannerView!) {
  print("adViewDidDismissScreen")
}

// Tells the delegate that a user click will open another app (such as
// the App Store), backgrounding the current app.
func adViewWillLeaveApplication(bannerView: DFPBannerView!) {
  print("adViewWillLeaveApplication")
}

Примеры использования

Вот несколько примеров использования методов для регистрации событий в приложениях.

Добавление баннера в иерархию представления после получения объявления

Вы можете отложить добавление объекта DFPBannerView в иерархию представления до того момента, когда будет получено объявление. Для этого необходимо прослушивать событие adViewDidReceiveAd:.

Objective-C

- (void)adViewDidReceiveAd:(DFPBannerView *)adView {
  [self.view addSubview:adView];
}

Swift

func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  view.addSubview(bannerView)
}

Метод addSubview автоматически удаляет представление из родительского элемента, если оно там уже есть. Поэтому рекомендуется выполнять такой вызов каждый раз.

Анимация баннера

Вы также можете воспользоваться событием adViewDidReceiveAd для анимации возвращенного баннера. В примере ниже показано, как настроить эффект постепенной прорисовки.

Objective-C

- (void)adViewDidReceiveAd:(DFPBannerView *)adView {
  adView.alpha = 0;
  [UIView animateWithDuration:1.0 animations:^{
    adView.alpha = 1;
  }];
}

Swift

func adViewDidReceiveAd(bannerView: DFPBannerView!) {
  bannerView.alpha = 0
  UIView.animateWithDuration(1, animations: {
    bannerView.alpha = 1
  })
}

Сторонние аналитические инструменты

SDK автоматически отслеживает клики и показы, но, если вы наряду с этим используете стороннее решение для сбора статистики, каждый вызов GADBannerViewDelegate можно отслеживать отдельно.

Приостановка и возобновление работы приложения

В протоколе GADBannerViewDelegate есть события, которые сообщают о показе или закрытии оверлея по клику, а также о вызове стороннего браузера. Если вы хотите узнавать о связи событий с объявлениями, настройте регистрацию методов GADBannerViewDelegate.

Однако, чтобы зарегистрировать все показы оверлеев или вызовы стороннего браузера, в том числе не связанные с кликами по объявлению, лучше настроить в приложении прослушивание аналогичных методов в классе UIViewController или UIApplication. В таблице ниже представлены эквивалентные методы для iOS, которые вызываются одновременно с методами GADBannerViewDelegate

Метод GADBannerViewDelegate Метод для iOS
adViewWillPresentScreen: UIViewController: viewWillDisappear:
adViewWillDismissScreen: UIViewController: viewWillAppear:
adViewDidDismissScreeen: UIViewController: viewDidAppear:
adViewWillLeaveApplication: UIApplicationDelegate: applicationDidEnterBackground:

Реализация протокола GADInterstitialDelegate

Регистрация событий в межстраничных объявлениях

Чтобы регистрировать события в межстраничных объявлениях, задайте в качестве значения свойства delegate в классе DFPInterstitial объект, который реализует протокол GADInterstitialDelegate. Как правило, класс, который реализует межстраничные объявления, выступает также в качестве класса-делегата, так что для свойства delegate можно задать значение self.

Objective-C

#import "DFPInterstitial.h"
#import "GADInterstitialDelegate.h"

@interface ViewController ()<GADInterstitialDelegate>

@property(nonatomic, strong) DFPInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:"/6499/example/interstitial"];
  self.interstitial.delegate = self;
}

Swift

import UIKit
import GoogleMobileAds

class ViewController: UIViewController, GADInterstitialDelegate {

  var interstitial: DFPInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = DFPInterstitial(adUnitID: "/6499/example/interstitial")
    interstitial.delegate = self
  }
}

Реализация методов для регистрации событий в межстраничных объявлениях

Ни один из методов протокола GADInterstitialDelegate не является обязательным, поэтому вы можете выбрать только нужные. В этом примере добавлены все методы, а также настроена запись сообщения в консоль.

Objective-C

// Called when an interstitial ad request succeeded.
- (void)interstitialDidReceiveAd:(DFPInterstitial *)ad {
  NSLog(@"interstitialDidReceiveAd");
}

// Called when an interstitial ad request failed.
- (void)interstitial:(DFPInterstitial *)ad
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}

// Called just before presenting an interstitial.
- (void)interstitialWillPresentScreen:(DFPInterstitial *)ad {
  NSLog(@"interstitialWillPresentScreen");
}

// Called before the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(DFPInterstitial *)ad {
  NSLog(@"interstitialWillDismissScreen");
}

// Called just after dismissing an interstitial and it has animated off the screen.
- (void)interstitialDidDismissScreen:(DFPInterstitial *)ad {
  NSLog(@"interstitialDidDismissScreen");
}

// Called just before the app will background or terminate because the user clicked on an
// ad that will launch another app (such as the App Store).
- (void)interstitialWillLeaveApplication:(DFPInterstitial *)ad {
  NSLog(@"interstitialWillLeaveApplication");
}

Swift

// Called when an interstitial ad request succeeded.
func interstitialDidReceiveAd(ad: DFPInterstitial!) {
  print("interstitialDidReceiveAd")
}

// Called when an interstitial ad request failed.
func interstitial(ad: DFPInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) {
  print("interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

// Called just before presenting an interstitial.
func interstitialWillPresentScreen(ad: DFPInterstitial!) {
  print("interstitialWillPresentScreen")
}

// Called before the interstitial is to be animated off the screen.
func interstitialWillDismissScreen(ad: DFPInterstitial!) {
  print("interstitialWillDismissScreen")
}

// Called just after dismissing an interstitial and it has animated off the screen.
func interstitialDidDismissScreen(ad: DFPInterstitial!) {
  print("interstitialDidDismissScreen")
}

// Called just before the application will background or terminate because the user clicked on an
// ad that will launch another app (such as the App Store).
func interstitialWillLeaveApplication(ad: DFPInterstitial!) {
  print("interstitialWillLeaveApplication")
}

Примеры использования

Сторонние аналитические инструменты

SDK автоматически отслеживает клики и показы, но, если вы наряду с этим используете стороннее решение для сбора статистики, каждый вызов GADInterstitialDelegate можно отслеживать отдельно.

Часто задаваемые вопросы

Буду ли я получать уведомления о событиях GADBannerViewDelegate и GADInterstitialDelegate при использовании агрегатора?
Да. Адаптеры сетей агрегатора возвращают все события, а затем эти сведения отправляются в приложение.
Можно ли использовать событие interstitialDidReceiveAd для показа межстраничных объявлений?
Мы не рекомендуем этого делать, чтобы не мешать работе пользователей с приложением. Воспользуйтесь предварительной загрузкой объявления и с помощью метода isReady объекта DFPInterstitial узнайте, готово ли оно к показу.

Оставить отзыв о...

Текущей странице
SDK for DFP Users on iOS
Нужна помощь? Обратитесь в службу поддержки.