ב-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
את קוד נכס האינטרנט של בעל האפליקציה, את מזהה ההגדרות הרצוי ואת האובייקטGANSearchAdControllerOptions
המשויך. - כל קריאה ל-
loadAds()
מציינת חיפוש חדש, והיא תגרום למחיקה של קבוצת המודעות הנוכחית ולביטול התוקף שלה. - נכסי הקריאייטיב של המודעות מאוחסנים בתיקייה
GANAdView
. - המודעות מוכנסות למודעה
GANAdView
באמצעות השיטהpopulateAdView
. בנוסף למאפייןGANAdView
שצריך לאכלס, מבצע הקריאה החוזרת מספקadIdentifier
– מחרוזת שרירותית שאמורה לזהות את המודעה באופן ייחודי. ב-API, מודעה ספציפית מוקצית לכל מזהה adIdentifier שמועבר. לאחר מכן, בכל פעם שמפתח ה-adKey הזה יועבר שוב בעתיד, אותה מודעה תוחזר. לדוגמה, אם תתבצע קריאה הראשונה שלpopulateAdView
באמצעות adIdentifier "keyA", כל קריאה נוספת אלpopulateAdView
בזמן העברת "keyA" בתורadIdentifier
תוביל להצגת אותה מודעה.
- זהו ה-UIView שמכיל את הקריאייטיב של המודעה.
- אפשר לאכלס את התצוגה הזו במודעה באמצעות השיטה
populateAdView
ב-GANSearchAdController
.
- מעבירים את האובייקט הזה לבונה
GANSearchAdController
כדי לציין את ההתנהגות של הבקשה להצגת מודעות.
- צריך להפעיל את השיטה
loadAds
במכונהGANSearchAdController
עם האובייקט הזה כדי לשלוח בקשה להצגת מודעה.
- צריך להטמיע את הממשק הזה ולספק אותו ל-
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"];
}
}
...