מודעות מעברון הן מודעות שמופיעות במסך מלא ומכסות את הממשק של האפליקציה עד שהמשתמש סוגר אותן. הן מוצגות בדרך כלל בנקודות מעבר טבעיות בזרימה של האפליקציה, למשל במהלך מעבר בין פעילויות או בזמן הפסקה בין שלבים במשחק. כשמודעת מעברון מוצגת באפליקציה, המשתמש יכול ללחוץ על המודעה ולהמשיך ליעד שלה, או לסגור אותה ולחזור לאפליקציה. מחקר מקרה.
במדריך הזה מוסבר איך לשלב מודעות מעברון באפליקציית iOS.
דרישות מוקדמות
- כדאי לעיין במדריך לתחילת העבודה.
תמיד כדאי לבצע בדיקות באמצעות מודעות בדיקה
כשמפתחים ובודקים אפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות שמוצגות למשתמשים. אם לא תעשו את זה, אנחנו עשויים להשעות את החשבון שלכם.
הדרך הכי קלה לטעון מודעות בדיקה היא להשתמש במזהה הייעודי של יחידת המודעות לבדיקה
למודעות אינטרסטיציאליות ל-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
מטפל בקריאות חוזרות (callback) למקרים שבהם המודעה מוצגת בהצלחה או לא, ולמקרים שבהם היא נסגרת. בדוגמה הבאה אפשר לראות איך מטמיעים את הפרוטוקול:
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:
handler של האירוע, שיופעל כשהמשתמש יסיים את האינטראקציה עם המודעה. בנוסף, כדאי להשהות באופן זמני משימות חישוב אינטנסיביות (כמו game loop) בזמן שהמודעה מוצגת. כך תוכלו לוודא שהמשתמש לא יחווה גרפיקה איטית או לא רספונסיבית או סרטון מגמגם. - הקפידו להקצות מספיק זמן לטעינה.
- חשוב להציג מודעות מעברון בזמן המתאים, אבל חשוב גם לוודא שהמשתמש לא יצטרך לחכות שהן ייטענו. טעינת המודעה מראש לפני שמתכוונים להציג אותה יכולה להבטיח שבזמן שבו צריך להציג מודעת מעברון, האפליקציה תהיה מוכנה עם מודעה שנטענה במלואה.
- אל תציפו את המשתמש במודעות.
- הגדלת התדירות של הצגת מודעות מעברון באפליקציה אולי נראית כמו דרך מצוינת להגדיל את ההכנסות, אבל היא עלולה גם לפגוע בחוויית המשתמש ולהקטין את שיעורי הקליקים. חשוב לוודא שההפרעות למשתמשים לא תכופות מדי, כדי שהם יוכלו ליהנות מהשימוש באפליקציה.
- אל תשתמשו בקריאה החוזרת (callback) של סיום הטעינה כדי להציג את מודעת המעברון.
- הדבר עלול לפגוע בחוויית המשתמש. במקום זאת, טוענים מראש את המודעה לפני שצריך להציג אותה. לאחר מכן, בודקים את השיטה
canPresentFromRootViewController:error:
ב-GADInterstitialAd
כדי לראות אם המודעה מוכנה להצגה.
מקורות מידע נוספים
דוגמאות ב-GitHub
אפשר לראות את כל הדוגמאות למודעות מעברון בשפה המועדפת:
מדריכי וידאו של Mobile Ads Garage
סיפורי הצלחה
השלבים הבאים
- אם עוד לא עשיתם זאת, יוצרים יחידת מודעות מעברון משלכם בממשק המשתמש של AdMob.
- מידע נוסף על טירגוט מודעות והנחיות לשימוש במודעות מעברון
- מידע נוסף על פרטיות המשתמשים