מודעות מעברון הן מודעות במסך מלא שמכסות את ממשק האפליקציה עד שהמשתמש סוגר אותן. הן מוצגות בדרך כלל בנקודות מעבר טבעיות בגלישה באפליקציה, למשל במהלך מעבר בין פעילויות או בזמן הפסקה בין שלבי משחק. כשמוצגת מודעת מעברון באפליקציה, המשתמש יכול להקיש על המודעה ולהמשיך ליעד שלה או לסגור אותה ולחזור לאפליקציה. מחקר מקרה
במדריך הזה מוסבר איך לשלב מודעות מעברון באפליקציה ל-iOS.
דרישות מוקדמות
- Google Mobile Ads SDK מגרסה 8.0.0 ואילך.
- קוראים את המדריך לתחילת העבודה.
תמיד כדאי לבדוק באמצעות מודעות בדיקה
כשאתם מפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה במקום במודעות פעילות בסביבת הייצור. אם לא תעשו זאת, החשבון שלכם עלול להיחסם.
הדרך הקלה ביותר לטעון מודעות בדיקה היא להשתמש במזהה הייעודי של יחידת המודעות לבדיקה עבור מודעות מעברון ב-iOS:
ca-app-pub-3940256099942544/4411468910
הוא מוגדר במיוחד להחזיר מודעות בדיקה לכל בקשה, ואתם יכולים להשתמש בו באפליקציות שלכם בזמן הכתיבה, הבדיקה ותיקון הבאגים. רק חשוב לוודא שתחליפו אותו במזהה של יחידת המודעות שלכם לפני שתפרסמו את האפליקציה.
מידע נוסף על אופן הפעולה של מודעות הבדיקה של Mobile Ads SDK זמין במאמר מודעות בדיקה.
הטמעה
השלבים העיקריים לשילוב מודעות מעברון הם:
- טוענים מודעה.
- להירשם לשיחות חוזרות.
- מציגים את המודעה.
טעינת מודעה
הטעינה של מודעה מתבצעת באמצעות השיטה 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 to the
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
הוא אובייקט לשימוש חד-פעמי. המשמעות היא שאחרי שמודעת מעברון מוצגת, אי אפשר להציג אותה שוב. מומלץ לטעון מודעת מעברון נוספת בשיטה 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:
, שיופעל כשהמשתמש יסיים את האינטראקציה עם המודעה. בנוסף, מומלץ להשהות באופן זמני משימות חישוב אינטנסיביות (כמו לולאה של משחק) בזמן הצגת המודעה. כך תוכלו להבטיח שהמשתמשים לא יראו גרפיקה איטית או לא תגובה, או סרטונים עם קפיצות. - צריך להמתין מספיק זמן עד שהמודעה נטענת.
- כמו שחשוב להציג מודעות מעברון בזמן המתאים, חשוב גם לוודא שהמשתמשים לא צריכים להמתין עד שהן נטענות. כדאי לטעון את המודעה מראש לפני שאתם מתכוונים להציג אותה, כדי לוודא שבאפליקציה תהיה מוכנה מודעה מעברון טעונה במלואה כשהזמן יגיע להציג אותה.
- אסור להציף את המשתמש במודעות.
- הגדלת התדירות של מודעות מעברון באפליקציה עשויה להיראות כדרך מצוינת להגדלת ההכנסות, אבל היא גם עלולה לפגוע בחוויית המשתמש ולהוריד את שיעורי הקליקים. חשוב לוודא שההפרעות למשתמשים לא תהיינה תכופות מדי, כדי שהם יוכלו ליהנות מהשימוש באפליקציה.
- אל תשתמשו בקריאה החוזרת (callback) לסיום הטעינה כדי להציג את המעברון.
- הדבר עלול לגרום לחוויית משתמש גרועה. במקום זאת, כדאי לטעון מראש את המודעה לפני שצריך להציג אותה. לאחר מכן, בודקים את השיטה
canPresentFromRootViewController:error:
ב-GADInterstitialAd
כדי לבדוק אם היא מוכנה להצגה.
מקורות מידע נוספים
דוגמאות ב-GitHub
כאן אפשר לראות את הדוגמאות המלאות למודעות מעברון בשפה המועדפת עליכם:
מדריכי וידאו של Mobile Ads Garage
סיפורי הצלחה
השלבים הבאים
- אם עדיין לא עשיתם זאת, יוצרים יחידת מודעות מעברון משלכם בממשק המשתמש של AdMob.
- מידע נוסף זמין במאמרים טירגוט מודעות והנחיות בנושא מודעות מעברון.
- מידע נוסף על פרטיות המשתמשים