Implementacja AdSense dla wyszukiwania do aplikacji mobilnych (AFSMA) na iOS

Wymagania wstępne

W tym przewodniku po implementacji przyjęto założenie, że znasz już te zagadnienia:

Opis

Ten dokument opisuje proces integracji reklam AdSense dla wyszukiwania do aplikacji mobilnych z aplikacjami na iOS. Aby wysyłać żądania reklam AFSMA na iOS i je renderować, musisz zastosować:

GADSearchBannerView

  • Ta klasa dziedziczy z klasy UIView w iOS i wyświetla reklamy AFSMA. GADSearchBannerView wysyła żądanie reklamy z zastosowaniem GADDynamicHeightSearchRequest i renderuje zwrócone reklamy. Element GADSearchBannerView należy dodać do dowolnego z dotychczasowych widoków aplikacji. Zwykle to kontroler widoku nadrzędnego znajduje się w widoku, do którego dodany jest widok GADSearchBannerView. Właściwych przedstawicieli należy ustawić na stronie GADSearchBannerView.
  • Aby można było wysyłać żądania reklam AFSMA, GADSearchBannerView musi być utworzony z elementem initWithAdSize:kGADAdSizeFluid. Tworzę instancję GADSearchBannerView z parametrem initWithAdSize:kGADAdSizeBanner, żądając starszych reklam AFSMA.
  • Właściwość adUnitID tego obiektu musi być ustawiona na kod usługi.

GADDynamicHeightSearchRequest

  • Ten obiekt zawiera parametry żądania reklamy. Przypomina to ustawianie parametrów w obiektach żądań reklam JavaScript (opcje stron i opcje jednostek) w przypadku AdSense dla wyszukiwania na komputery i w internecie mobilnym.

(void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size

  • To wywołanie zwrotne jest wywoływane po zwróceniu żądania reklamy. Zwrócona jednostka reklamowa może zawierać pewną liczbę reklam z różnymi rozszerzeniami, więc dokładny rozmiar takiej jednostki po wysłaniu żądania reklamy jest nieznany. Po zwróceniu reklamy należy dostosować widok banera do nowego rozmiaru jednostki reklamowej. Tutaj należy zaimplementować kod powodujący zmianę rozmiaru elementu GADSearchBannerView w widoku nadrzędnym.

Przykładowa implementacja

Przykład poniżej pokazuje, jak użyć GBannerViewController do utworzenia widoku GADSearchBannerView jako widoku podrzędnego UIScrollView. Aby można było prawidłowo wysyłać żądania reklam AdSense dla treści, obiekt GADSearchBannerView musi mieć instancję initWithAdSize:kGADAdSizeFluid.

// GBannerViewController.m implementation

@interface GBannerViewController () <GADAdSizeDelegate,
                                     GADBannerViewDelegate>

@property(nonatomic, strong) GADSearchBannerView *searchBannerView;

@property(nonatomic, strong) UIScrollView *scrollView;

@end

@implementation GBannerViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  // Create the scroll view.
  ....
  ....

  // Create the banner.
  self.searchBannerView = [[GADSearchBannerView alloc] initWithAdSize:kGADAdSizeFluid];

  // Replace with your pub ID (e.g. ms-app-pub-9616389000213823).
  self.searchBannerView.adUnitID = @"ms-app-pub-################";

  // Set the initial location and size of the banner. The initial height
  // is set to 0 since we might not get an ad back.
  self.searchBannerView.frame = CGRectMake(0,
                                           0,
                                           CGRectGetWidth(self.view.bounds),
                                           0);
  self.searchBannerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

  // Set the delegate properties.
  self.searchBannerView.adSizeDelegate = self;
  self.searchBannerView.delegate = self;

  // Add the new search banner into the parent scrollView.
  [self.scrollView addSubview:self.searchBannerView];
  }

W tym samym obiekcie GBannerViewController utwórz GADDynamicHeightSearchRequest, który określa parametry reklamy, która będzie renderowana w GADSearchView.

// Create a search request and load the banner.
GADDynamicHeightSearchRequest *searchRequest = [[GADDynamicHeightSearchRequest alloc] init];

// Ad request options (set using GADDynamicHeightSearchRequest properties).
searchRequest.query = @"flowers";
searchRequest.numberOfAds = 2;

// Replace with the ID of a style from your custom search styles
[searchRequest setAdvancedOptionValue:@"0000000001"
                               forKey:@"styleId"];

Inne opcje dostosowywania są dostępne po ustawieniu dodatkowych właściwości w obiekcie GADDynamicHeightSearchRequest.

Aby wysłać żądanie reklamy, wywołaj loadRequest za pomocą obiektu GADDynamicHeightSearchRequest z obiektu GADSearchBannerView:

[self.searchBannerView loadRequest:searchRequest];

Aby po zwróceniu reklam widok nadrzędny poprawnie obsługiwał funkcję GADSearchBannerView, należy zaimplementować poniższe wywołanie zwrotne.

// Callback to update the parent view height.
- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size {
  // Update the banner view based on the ad size.
  CGRect newFrame = self.searchBannerView.frame;
  newFrame.size.height = size.size.height;
  self.searchBannerView.frame = newFrame;

  // Perform any additional logic needed due to banner view size change.
  ...
}

Opcje zaawansowane

Większość parametrów żądania reklamy można ustawić za pomocą właściwości w obiekcie GADDynamicHeightSearchRequest (searchRequest powyżej). Inne parametry należy ustawiać za pomocą par klucz-wartość przy użyciu metody setAdvancedOptionValue:

// Advanced customization options (set using key-value pair).

// Set a parameter (parameter_name) and its value (parameter_value).
[searchRequest setAdvancedOptionValue:@"parameter_value"
                               forKey:@"parameter_name"];

// Example: Show visible URL below description (domainLinkAboveDescription: false).
[searchRequest setAdvancedOptionValue:@"false"
                               forKey:@"domainLinkAboveDescription"];

Zobacz pełną listę dostępnych parametrów.

Analizowanie błędów

GADBannerViewDelegate zawiera wywołanie zwrotne, które pomaga w przeanalizowaniu błędów:

- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error {

  // This callback is triggered when the ad request fails.
  // Add code here to debug the error object to discover causes of failure
  NSLog(@"Ad call failed due to %@", error.userInfo[@"NSUnderlyingError"]);
}

Jeśli żądanie reklamy nie powiedzie się, możesz użyć tego wywołania zwrotnego, aby prawidłowo obsłużyć błąd i zbadać go za pomocą obiektu błędu.