Пользовательские форматы нативной рекламы для медийной рекламы и открытое измерение

Если вы планируете использовать открытое измерение с собственными форматами нативной рекламы, не содержащими видеоресурсов, вам придется самостоятельно вызывать API открытого измерения. Открытое отслеживание персонализированных форматов нативных объявлений медийного типа поддерживается только в версии 7.43.0 и более поздних версиях. Если вы используете собственные форматы нативных объявлений с видеообъектом, вам не нужно следовать этому руководству: Google Mobile Ads SDK отслеживает видимость видеообъекта от вашего имени.

Предварительные условия

Загрузить объявление

Загрузка объявления одинакова независимо от того, используете ли вы открытое измерение или нет. В этом случае мы будем использовать простой ViewController , чтобы продемонстрировать загрузку GADNativeCustomFormatAd :

@interface OpenMeasurementNativeCustomFormatAdViewController ()
    <GADNativeCustomFormatAdLoaderDelegate> {
  IBOutlet UIView *_parentView;
  GADAdLoader *_adLoader;
  GADNativeCustomFormatAd *_customTemplateAd;
  MySimpleNativeAdView *_simpleNativeAdView;
}

@end

@implementation OpenMeasurementNativeCustomFormatAdViewController

- (void) viewDidLoad {
  [super viewDidLoad];

  _adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"your ad unit ID"
                                 rootViewController:self
                                            adTypes:@[ kGADAdLoaderAdTypeNativeCustomFormat ]
                                            options:nil];
  _adLoader.delegate = self;
  [self loadAd];
}

- (void) loadAd {
  GAMRequest *request = [GAMRequest request];
  [_adLoader loadRequest:request];
}
...
@end

Зарегистрируйте свой вид и начните измерения

При показе GADNativeCustomFormatAd вам необходимо зарегистрировать собственное представление объявления в GADNativeTemplateAd используя свойство displayAdMeasurement.view .

Вам также необходимо явно указать SDK, чтобы он начал анализировать вашу рекламу. Для этого вызовите метод startWithError: свойства displayAdMeasurement вашего GADNativeCustomFormatAd . startWithError: должен вызываться из основного потока, последующие вызовы не имеют никакого эффекта.

@implementation OpenMeasurementNativeCustomFormatAdViewController
...
#pragma mark - GADNativeCustomFormatAdLoaderDelegate

- (void) adLoader:(GADAdLoader *) adLoader
    didReceiveNativeCustomFormatAd:(GADNativeCustomFormatAd *)nativeCustomFormatAd {
  NSLog(@"Received custom native ad: %@", nativeCustomFormatAd);

  _customTemplateAd = nativeCustomFormatAd;

  // Put the custom native ad on screen.
  _simpleNativeAdView =
    [[NSBundle mainBundle] loadNibNamed:@"SimpleCustomNativeAdView"
                                  owner:nil
                                options:nil]
    .firstObject;
  [_parentView addSubview:_simpleNativeAdView];
  [_simpleNativeAdView populateWithCustomNativeAd:_customTemplateAd];

  // Set the top-level native ad view on the GADNativeCustomFormatAd so the
  // Google Mobile Ads SDK can track viewability for that view.
  _customTemplateAd.displayAdMeasurement.view = _simpleNativeAdView;
  // Begin measuring your impressions and clicks.
  NSError *error = nil;
  [_customTemplateAd.displayAdMeasurement startWithError:&error];

  if (error) {
    NSLog(@"Failed to start the display measurement.");
  }
}
...
@end

Вот и все. После выпуска приложения вы начнете получать данные измерений, однако ваши данные не будут сертифицированы, пока вы не пройдете процесс сертификации IAB .