הטמעה של מודעות 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

איך מייבאים את ה-SDK של Google-AFS Native לפרויקט iOS באמצעות CocoaPods. פותחים את הפרויקט Podfile ולהוסיף את השורה הזו ליעד של האפליקציה:

pod 'Google-AFSNative'

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

pod install --repo-update

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

סקירה כללית

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

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

GANSearchAdController

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

GANAdView

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

GANSearchAdControllerOptions

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

GANSearchAdRequest

  • קוראים ל-method 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"];
  }
}
...