מודעת מעברון מתגמלת היא סוג של פורמט מודעה בתמורה לתמריץ, שמאפשר לכם להציע תגמולים למודעות שמופיעות באופן אוטומטי במהלך מעברים טבעיים בין אפליקציות. בניגוד למודעות מתגמלות, המשתמשים לא שנדרש כדי להביע הסכמה לצפייה במודעת מעברון מתגמלת.
דרישות מוקדמות
- Google Mobile Ads SDK מגרסה 7.60.0 ואילך.
- מבצעים את ההוראות במדריך לתחילת העבודה.
הטמעה
אלה השלבים העיקריים לשילוב מודעות מעברון מתגמלות:
- טעינת מודעה
- [אופציונלי] אימות התקשרות חזרה של SSV
- הרשמה להתקשרות חזרה
- הצגת המודעה וטיפול באירוע התגמול
טעינת מודעה
הטעינה של מודעה מתבצעת באמצעות המסנן הסטטי
השיטה loadWithAdUnitID:request:completionHandler:
ב
כיתה אחת (GADRewardedInterstitialAd
). לשיטת הטעינה נדרש מזהה יחידת המודעות שלך,
אובייקט GAMRequest
ו-handler של השלמה
נשלחת קריאה כשטעינת המודעה מצליחה או נכשלת. הפריטים שנטענו
אובייקט GADRewardedInterstitialAd
סופק כפרמטר בהשלמה
המטפל. הדוגמה הבאה מראה איך לטעון GADRewardedInterstitialAd
ב-
בכיתה ViewController
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var rewardedInterstitialAd: GADRewardedInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
do {
rewardedInterstitialAd = try await GADRewardedInterstitialAd.load(
withAdUnitID: "/21775744923/example/rewarded-interstitial", request: GAMRequest())
} catch {
print("Failed to load rewarded interstitial ad with error: \(error.localizedDescription)")
}
}
}
Objective-C
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic, strong) GADRewardedInterstitialAd* rewardedInterstitialAd;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[GADRewardedInterstitialAd
loadWithAdUnitID:@"<var label='the ad unit ID'>/21775744923/example/rewarded-interstitial</var>"
request:[GAMRequest request]
completionHandler:^(
GADRewardedInterstitialAd* _Nullable rewardedInterstitialAd,
NSError* _Nullable error) {
if (!error) {
self.rewardedInterstitialAd = rewardedInterstitialAd;
}
}
];
}
[אופציונלי] אימות קריאות חוזרות (callback) של אימות בצד השרת (SSV)
אפליקציות שמחייבות נתונים נוספים בצד השרת
צריך להשתמש בפונקציה
נתונים מותאמים אישית של המודעות המתגמלות. כל ערך מחרוזת שמוגדר במודעה מתגמלת
האובייקט מועבר אל פרמטר השאילתה custom_data
של הקריאה החוזרת ל-SSV. אם לא
מוגדר ערך של נתונים מותאמים אישית, ערך הפרמטר custom_data
של השאילתה לא יהיה
נמצאים בקריאה החוזרת של ה-SSV.
דוגמת הקוד הבאה מדגימה איך מגדירים נתונים בהתאמה אישית במודעה מתגמלת אובייקט של מודעת מעברון לפני שמבקשים להציג מודעה.
Swift
do {
rewardedInterstitialAd = try await GADRewardedInterstitialAd.load(
withAdUnitID: "/21775744923/example/rewarded-interstitial", request: GAMRequest())
let options = GADServerSideVerificationOptions()
options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING"
rewardedInterstitialAd.serverSideVerificationOptions = options
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
Objective-C
[GADRewardedInterstitialAd
loadWithAdUnitID:@"/21775744923/example/rewarded-interstitial"
request:GAMRequest
completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) {
if (error) {
// Handle Error
return;
}
self.rewardedInterstitialAd = ad;
GADServerSideVerificationOptions *options =
[[GADServerSideVerificationOptions alloc] init];
options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING";
ad.serverSideVerificationOptions = options;
}];
הרשמה להתקשרות חזרה
כדי לקבל התראות על אירועי ההצגה, צריך להטמיע
את הפרוטוקול GADFullScreenContentDelegate
ולהקצות אותו
מאפיין fullScreenContentDelegate
של המודעה שהוחזרה.
הפרוטוקול GADFullScreenContentDelegate
מטפל בקריאות חוזרות (callback) כשהמודעה מוצגת
מוצגת בהצלחה או נכשלת, וכשהיא נסגרת. הבאים
שמראה איך להטמיע את הפרוטוקול ולהקצות אותו למודעה:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var rewardedInterstitialAd: GADRewardedInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
do {
rewardedInterstitialAd = try await GADRewardedInterstitialAd.load(
withAdUnitID: "/21775744923/example/rewarded-interstitial", request: GAMRequest())
self.rewardedInterstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load rewarded interstitial ad with error: \(error.localizedDescription)")
}
}
/// Tells the delegate that the ad failed to present full screen content.
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad did fail to present full screen content.")
}
/// Tells the delegate that the ad will present full screen content.
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad will present full screen content.")
}
/// Tells the delegate that the ad dismissed full screen content.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
}
}
Objective-C
@interface ViewController () <GADFullScreenContentDelegate>
@property(nonatomic, strong) GADRewardedInterstitialAd *rewardedInterstitialAd;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[GADRewardedInterstitialAd
loadWithAdUnitID:@"/21775744923/example/rewarded-interstitial"
request:[GAMRequest request]
completionHandler:^(
GADRewardedInterstitialAd *_Nullable rewardedInterstitialAd,
NSError *_Nullable error) {
if (!error) {
self.rewardedInterstitialAd = rewardedInterstitialAd;
self.rewardedInterstitialAd.fullScreenContentDelegate = self;
}
}];
}
/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
NSLog(@"Ad did fail to present full screen content.");
}
/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad will present full screen content.");
}
/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad did dismiss full screen content.");
}
הצגת המודעה וטיפול באירוע התגמול
כשמציגים את המודעה, צריך לספק אובייקט GADUserDidEarnRewardHandler
כדי להתמודד עם התגמול למשתמש.
בקוד הבא מוצגת השיטה הטובה ביותר להצגת מודעה מתגמלת מודעת מעברון.
Swift
func show() {
guard let rewardedInterstitialAd = rewardedInterstitialAd else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
rewardedInterstitialAd.present(fromRootViewController: nil) {
let reward = rewardedInterstitialAd.adReward
print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
// TODO: Reward the user.
}
}
Objective-C
- (void)show {
// The UIViewController parameter is nullable.
[_rewardedInterstitialAd presentFromRootViewController:nil
userDidEarnRewardHandler:^{
GADAdReward *reward =
self.rewardedInterstitialAd.adReward;
// TODO: Reward the user.
}];
}