מודעות מעברון הן מודעות במסך מלא שמכסות את הממשק של האפליקציה עד שהמשתמש סוגר אותן. בדרך כלל הן מוצגות בנקודות מעבר טבעיות בזרימה של האפליקציה, למשל בין פעילויות או במהלך ההשהיה בין שלבים במשחק. כשאפליקציה מציגה מודעת מעברון, המשתמש יכול לבחור אם ללחוץ על המודעה ולהמשיך ליעד שלה או לסגור אותה ולחזור לאפליקציה. מקרה לדוגמה.
במדריך הזה מוסבר איך לשלב מודעות מעברון באפליקציה ל-iOS.
דרישות מוקדמות
לפני שממשיכים, מגדירים את Google Mobile Ads SDK.
תמיד צריך לבדוק באמצעות מודעות בדיקה
כשאתם מפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות. אחרת, אנחנו עלולים להשעות את החשבון.
הדרך הכי קלה לטעון מודעות לבדיקה היא להשתמש במזהה יחידת המודעות הייעודית לבדיקה שלנו למודעות מעברון ב-iOS:
ca-app-pub-3940256099942544/4411468910
הוא הוגדר במיוחד כדי להחזיר מודעות בדיקה לכל בקשה, ואתם יכולים להשתמש בו באפליקציות שלכם בזמן התכנות, הבדיקה וניפוי הבאגים. רק חשוב להחליף אותו במזהה יחידת המודעות שלכם לפני שמפרסמים את האפליקציה.
פרטים על מודעות בדיקה ב-Google Mobile Ads SDK זמינים במאמר הפעלת מודעות בדיקה.
הטמעה
השלבים העיקריים לשילוב מודעות מעברון הם:
- טוענים מודעה.
- להירשם לקבלת שיחות חוזרות.
- הצגת המודעה.
טעינת מודעה
כדי לטעון מודעה, משתמשים ב-method load(adUnitID:request) במחלקה GADInterstitialAd.
Swift
fileprivate func loadInterstitial() async {
do {
interstitial = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, FullScreenContentDelegate {
private var interstitialAd: InterstitialAd?
func loadAd() async {
do {
interstitialAd = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
Objective-C
[GADInterstitialAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:[GADRequest request]
completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
רישום להתקשרות חזרה
כדי לקבל התראות על אירועי הצגה, צריך להקצות את GADFullScreenContentDelegate למאפיין fullScreenContentDelegate של המודעה שהוחזרה:
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
הפרוטוקול GADFullScreenContentDelegate מטפל בקריאות חוזרות (callbacks) כשהמודעה מוצגת בהצלחה או לא מוצגת בהצלחה, וכשהיא נסגרת. הקוד הבא מראה איך להטמיע את הפרוטוקול:
Swift
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("\(#function) called with error: \(error.localizedDescription)")
// Clear the interstitial ad.
interstitial = nil
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitial = nil
}
SwiftUI
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
Objective-C
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)ad:(id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
// Clear the interstitial ad.
self.interstitial = nil;
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the interstitial ad.
self.interstitial = nil;
}
GADInterstitialAd הוא אובייקט לשימוש חד-פעמי. כלומר, אחרי שמציגים מודעת מעברון, אי אפשר להציג אותה שוב. שיטה מומלצת היא לטעון מודעת מעברון נוספת ב-method adDidDismissFullScreenContent: ב-GADFullScreenContentDelegate, כדי שמודעת המעברון הבאה תתחיל להיטען ברגע שהמודעה הקודמת תיסגר.
הצגת המודעה
צריך להציג מודעות מעברון בנקודות עצירה טבעיות בזרימה של האפליקציה. לדוגמה, בין שלבים במשחק או אחרי שהמשתמש משלים משימה.
Swift
ad.present(from: self!)
SwiftUI
האזינו לאירועים של ממשק המשתמש בתצוגה כדי לקבוע מתי להציג את המודעה.
var body: some View {
// ...
}
.onChange(of: countdownTimer.isComplete) { newValue in
showGameOverAlert = newValue
}
.alert(isPresented: $showGameOverAlert) {
Alert(
title: Text("Game Over"),
message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
dismissButton: .cancel(
Text("OK"),
action: {
viewModel.showAd()
}))
מציגים את מודעת המעברון מהמודל של התצוגה:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(from: nil)
}
Objective-C
[self.interstitial presentFromRootViewController:self];
שיטות מומלצות
- חשוב לבדוק אם מודעות מעברון הן סוג המודעה שמתאים לאפליקציה.
- מודעות מעברון פועלות בצורה הכי טובה באפליקציות עם נקודות מעבר טבעיות. נקודת מעבר כזו נוצרת בסיום של משימה כלשהי באפליקציה, כמו שיתוף תמונה או השלמת שלב במשחק. המשתמש מצפה להפסקה בפעולה, ולכן קל להציג מודעת מעברון בלי להפריע לחוויית השימוש שלו. חשוב להביא בחשבון את הנקודות בתהליך העבודה של האפליקציה שבהן יוצגו מודעות המעברון, ואת האופן שבו המשתמשים צפויים להגיב.
- חשוב לזכור להשהות את הפעולה כשמציגים מודעת מעברון.
- יש כמה סוגים של מודעות מעברון: טקסט, תמונה, וידאו ועוד. חשוב לוודא שכשהאפליקציה מציגה מודעת מעברון, היא גם משעה את השימוש בחלק מהמשאבים כדי לאפשר למודעה לנצל אותם. לדוגמה, כשמפעילים את הקריאה להצגת מודעת מעברון, חשוב להשהות את כל פלט האודיו שמופק על ידי האפליקציה. אפשר להמשיך להשמיע צלילים ב-גורם מטפל באירועים של
adDidDismissFullScreenContent:, שיופעל כשהמשתמש יסיים את האינטראקציה עם המודעה. בנוסף, כדאי להפסיק באופן זמני משימות חישוב אינטנסיביות (כמו game loop) בזמן שהמודעה מוצגת. כך אפשר לוודא שהמשתמש לא יחווה גרפיקה איטית או לא מגיבה, או סרטון מקוטע. - צריך להמתין עד שהדף ייטען.
- חשוב להציג את מודעות המעברון בזמן המתאים, אבל חשוב גם לוודא שהמשתמשים לא צריכים לחכות שהן ייטענו. כדי לוודא שהאפליקציה תציג מודעת מעברון שנטענה במלואה כשיגיע הזמן להציג אותה, אפשר לטעון את המודעה מראש.
- אל תציפו את המשתמשים במודעות.
- הגברת תדירות ההצגה של מודעות המעברון באפליקציה אולי נראית כמו דרך טובה להגדיל את ההכנסות, אבל היא גם עלולה לפגוע בחוויית השימוש ולהקטין את שיעורי הקליקים. חשוב לוודא שהמשתמשים לא נתקלים בהפרעות בתדירות גבוהה מדי, כדי שהם יוכלו ליהנות מהשימוש באפליקציה.
- אל תשתמשו בקריאה חוזרת (callback) של השלמת הטעינה כדי להציג את מודעת המעברון.
- זה עלול לפגוע בחוויית המשתמש. במקום זאת, טוענים מראש את המודעה לפני שצריך להציג אותה. לאחר מכן, בודקים את השיטה
canPresentFromRootViewController:error:ב-GADInterstitialAdכדי לראות אם המודעה מוכנה להצגה.
מקורות מידע נוספים
דוגמאות ב-GitHub
דוגמאות מלאות למודעות מעברון בשפה המועדפת עליכם:
סרטוני הדרכה של Mobile Ads Garage
סיפורי הצלחה
השלבים הבאים
- אם עדיין לא עשיתם את זה, צרו יחידת מודעות מעברון משלכם בממשק המשתמש של AdMob.
- מידע נוסף על טירגוט מודעות והנחיות למודעות מעברון.
- מידע נוסף על פרטיות המשתמשים