הטמעה של מודעות AdSense לחיפוש (AFS) ב-iOS

ב-Google Mobile Ads SDK יש גם תמיכה בסגנונות מותאמים אישית של המודעות בחיפוש. אם באפליקציה שלכם כבר נעשה שימוש ב-Google Mobile Ads SDK, מומלץ להשתמש במקום זאת בגרסה של AFSMA SDK.

דרישות מוקדמות

  • נדרש Xcode מגרסה 8.0 ואילך
  • ל-iOS מגרסה 8.0 ואילך
  • קוד חוקי של נכס אינטרנט של בעל האתר (למשל vert-ppa-test1-srp)
  • CocoaPods

ייבוא ה-SDK המקורי של AFS

CocoaPods

מייבאים את Google-AFSNative SDK לפרויקט ב-iOS באמצעות CocoaPods. פותחים את קובץ ה-Podfile של הפרויקט ומוסיפים את השורה הבאה ליעד של האפליקציה:

pod 'Google-AFSNative'

לאחר מכן, משורת הפקודה מריצים את:

pod install --repo-update

משתמשים חדשים ב-CocoaPods יכולים לעיין בתיעוד הרשמי שלהם כדי להבין איך ליצור קובצי Podfiles ולהשתמש בהם.

סקירה כללית

אם משדרגים לגרסה 4.0 ואילך מגרסה 2.0.8 או מוקדמת יותר, כדאי לעיין במדריך להעברת נתונים (מיגרציה).

המסמך הזה מתאר את תהליך השילוב של מודעות מותאמות של AdSense לחיפוש (AFS) באפליקציה לנייד ל-iOS.

GANSearchAdController

  • צריך לספק לבנאי GANSearchAdController את קוד נכס האינטרנט של בעל האפליקציה, את מזהה ההגדרות הרצוי ואת האובייקט GANSearchAdControllerOptions המשויך.
  • כל קריאה ל-loadAds() מציינת חיפוש חדש, והיא תגרום למחיקה של קבוצת המודעות הנוכחית ולביטול התוקף שלה.
  • נכסי הקריאייטיב של המודעות מאוחסנים בתיקייה GANAdView.
  • המודעות מוכנסות למודעה GANAdView באמצעות השיטה populateAdView. בנוסף למאפיין GANAdView שצריך לאכלס, מבצע הקריאה החוזרת מספק adIdentifier – מחרוזת שרירותית שאמורה לזהות את המודעה באופן ייחודי. ב-API, מודעה ספציפית מוקצית לכל מזהה adIdentifier שמועבר. לאחר מכן, בכל פעם שמפתח ה-adKey הזה יועבר שוב בעתיד, אותה מודעה תוחזר. לדוגמה, אם תתבצע קריאה הראשונה של populateAdView באמצעות adIdentifier "keyA", כל קריאה נוספת אל populateAdView בזמן העברת "keyA" בתור adIdentifier תוביל להצגת אותה מודעה.

GANAdView

  • זהו ה-UIView שמכיל את הקריאייטיב של המודעה.
  • אפשר לאכלס את התצוגה הזו במודעה באמצעות השיטה populateAdView ב-GANSearchAdController.

GANSearchAdControllerOptions

  • מעבירים את האובייקט הזה לבונה GANSearchAdController כדי לציין את ההתנהגות של הבקשה להצגת מודעות.

GANSearchAdRequest

  • צריך להפעיל את השיטה loadAds במכונה GANSearchAdController עם האובייקט הזה כדי לשלוח בקשה להצגת מודעה.

GANSearchAdControllerDelegate

  • צריך להטמיע את הממשק הזה ולספק אותו ל-GANSearchAdController כדי לרשום קריאות חוזרות (callback) בכמה מדינות.

הטמעה לדוגמה

הדוגמה הבאה מראה איך יוצרים GANSearchAdController ו-GANView כדי להציג מודעה בדוגמה ViewController.

// SampleAppViewController.m implementation

#import <AFSNative/AFSNative.h>

@interface GBannerViewController () {
  // The Ad Controller used by the sample application.
  GANSearchAdController *_adController;

  // The Ad View to display the loaded ad.
  GANAdView *_adView;
}
// scrollView will be where we place our ads in this example.
@property(nonatomic, strong) UIScrollView *scrollView;
@end
...

- (void)viewDidLoad {
  [super viewDidLoad];

  // Create the scroll view.
  ...
  [self.view addSubview:scrollView];

  // Create a test button and link the ad request to its action.
  UIButton *loadBannerButton = [UIButton buttonWithType:UIButtonTypeCustom];
  ...
  [loadBannerButton addTarget:self
                       action:@selector(loadAd:)
             forControlEvents:UIControlEventTouchUpInside];
  [self.scrollView addSubview:loadBannerButton];

  // Construct the Ad Controller.
  GANSearchAdControllerOptions *options = [[GANSearchAdControllerOptions alloc] init];
  options.prefetchEnabled = YES;
  options.adType = GANSearchAdTypeSPA;
  options.adFetchCount = 3;

  _adController = [[GANSearchAdController alloc]
                     initWithPublisherID: @"your-client-id"
                                 styleID: @"your-settings-id"
                                 options: options
                                delegate: self];

  _adView = [_adController adView];
  [self.scrollView addSubview:_adView];
}

// Request ads when the test button is pressed.
- (void)loadAd:(id)sender {
  // Construct the Ad Request.
  GANSearchAdRequest *adRequest = [[GANSearchAdRequest alloc] init];
  adRequest.query =  @"some-query";
  // Start loading ads. Note that the loading is asynchronous.
  [_adController loadAds: adRequest];
}

// Insert ads into GANAdView if the request returns successfully.
- (void)searchAdController:(GANSearchAdController *)adController  
                didLoadAds:(NSInteger)numberOfAds {
  if (numberOfAds <= 0) {
    NSLog(@"No ads found on the server");
  } else {
    [_adController populateAdView:_adView identifier:@"demoAd"];
  }
}
...