מודעות מעברון הן מודעות במסך מלא שמכסות את ממשק האפליקציה עד שהמשתמש סוגר אותן. הן מוצגות בדרך כלל בנקודות מעבר טבעיות בגלישה באפליקציה, למשל במהלך מעבר בין פעילויות או בזמן הפסקה בין שלבי משחק. כשמוצגת מודעת מעברון באפליקציה, המשתמש יכול להקיש על המודעה ולהמשיך ליעד שלה או לסגור אותה ולחזור לאפליקציה. מחקר מקרה
במדריך הזה מוסבר איך לשלב מודעות ביניים באפליקציות ל-Android ול-iOS באמצעות Google Mobile Ads C++ SDK.
דרישות מוקדמות
- ממלאים את תחילת העבודה.
- (Android בלבד) היכרות עם הפניה
jobject
של JNI (ראו טיפים ל-JNI ב-Android).
תמיד כדאי לבדוק באמצעות מודעות בדיקה
כשאתם מפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה במקום במודעות פעילות בסביבת הייצור. אם לא תעשו זאת, החשבון שלכם עלול להיחסם.
הדרך הקלה ביותר לטעון מודעות לבדיקה היא להשתמש במזהה הייעודי של יחידת המודעות לבדיקה של מודעות מעברון, שמשתנה בהתאם לפלטפורמת המכשיר:
- Android:
ca-app-pub-3940256099942544/1033173712
- iOS:
ca-app-pub-3940256099942544/4411468910
הם מוגדרים במיוחד להחזרת מודעות בדיקה לכל בקשה, ואתם יכולים להשתמש בהם באפליקציות שלכם בזמן הכתיבה, הבדיקה ותיקון הבאגים. רק חשוב להחליף אותו במזהה יחידת המודעות שלכם לפני פרסום האפליקציה.
מידע נוסף על אופן הפעולה של מודעות הבדיקה של Mobile Ads SDK זמין במאמר מודעות בדיקה.
הטמעה
השלבים העיקריים לשילוב מודעות מעברון הם:
- טוענים מודעה.
- להירשם לשיחות חוזרות.
- הצגת המודעה וטיפול באירועים במחזור החיים שלה.
הגדרת InterstitialAd
מודעות מעברון מוצגות באובייקטים מסוג InterstitialAd
, ולכן השלב הראשון בשילוב מודעות מעברון באפליקציה הוא ליצור אובייקט InterstitialAd
ולאתחל אותו.
מוסיפים את הכותרת הבאה לקוד C++ של האפליקציה:
#include "firebase/gma/interstial_ad.h"
מגדירים אובייקט
InterstitialAd
ויוצרים מופע שלו:firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
מאתחלים את המופע של
InterstitialAd
באמצעות הטיפוס של תצוגת ההורה שהועברה ל-AdParent
. תצוגת ההורה היא הפניהjobject
של JNI ל-Activity
ב-Android או למצביע ל-UIView
ב-iOS.// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
לחלופין, במקום לשמור את ה-Future כמשתנה, אפשר לבדוק מדי פעם את סטטוס פעולת האי initialization על ידי קריאה ל-
InitializeLastResult()
באובייקטInterstitialAd
. האפשרות הזו יכולה לעזור לכם לעקוב אחרי תהליך האיניציאליזציה בלולאת המשחק הגלובלית.// Monitor the status of the future in your game loop: firebase::Future<void> result = interstitial_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
למידע נוסף על עבודה עם firebase::Future
, ראו שימוש בחוזים עתידיים למעקב אחרי סטטוס השלמת הקריאות ל-method.
טעינת מודעה
טעינת מודעה מתבצעת באמצעות השיטה LoadAd()
באובייקט InterstitialAd
. כדי להשתמש בשיטת הטעינה, צריך לאתחל את האובייקט InterstitialAd
, וצריך את מזהה יחידת המודעות ואובייקט AdRequest
. הפונקציה מחזירה firebase::Future
שאפשר להשתמש בו כדי לעקוב אחרי המצב והתוצאה של פעולת הטעינה.
הקוד הבא מראה איך לטעון מודעה אחרי שה-InterstitialAd
הופעל בהצלחה:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);
הרשמה להתקשרויות חוזרות
כדי לקבל התראות על הצגת מודעות מעברון ועל אירועים במחזור החיים שלהן, צריך להרחיב את הכיתה FullScreenContentListener
. אפשר לרשום את המשנה בהתאמה אישית של FullScreenContentListener
באמצעות השיטה InterstitialAd::SetFullScreenContentListener()
, והיא תקבל קריאות חזרה (callbacks) כשהמודעה תוצג בהצלחה או שלא תוצג, וגם כשהיא תיסגר.
הקוד הבא מראה איך להרחיב את הכיתה ולהקצות אותה למודעה:
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* full_screen_content_listener = new ExampleFullScreenContentListener(); interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);
InterstitialAd
הוא אובייקט לשימוש חד-פעמי. המשמעות היא שאחרי שמודעה מעברון תוצג, לא ניתן להציג אותה שוב. מומלץ לטעון מודעה מעברון נוספת בשיטה OnAdDismissedFullScreenContent()
של FullScreenContentListener
, כדי שהמודעה המעברון הבאה תתחיל להיטען ברגע שהמודעה הקודמת תיסגר.
הצגת המודעה
מודעות מעברון צריכות להופיע במהלך הפסקות טבעיות בזרימה של האפליקציה. לדוגמה, בין רמות במשחק או אחרי שהמשתמש משלים משימה.
אפשר להשתמש ב-FullScreenContentListener
כדי לקבוע מתי מוצג התוכן במסך מלא של המודעה, אבל הערך העתידי שמוחזר על ידי Show()
יאותת גם מתי המודעה הוצגה בהצלחה.
firebase::Future<void> result = interstitial_ad->Show();
שיטות מומלצות
- כדאי לבדוק אם מודעות מעברון הן סוג המודעה המתאים לאפליקציה שלכם.
- מודעות מעברון פועלות בצורה הטובה ביותר באפליקציות עם נקודות מעבר טבעיות. נקודות כאלה נוצרות בסיום של משימה באפליקציה, כמו שיתוף תמונה או השלמת רמה במשחק. מכיוון שהמשתמש מצפה להפסקה בפעולה, קל להציג לו מודעת מעברון בלי להפריע לחוויית השימוש שלו. חשוב להביא בחשבון באילו נקודות בתהליך העבודה באפליקציה תוצגו מודעות מעברון, ואיך סביר להניח שהמשתמשים יגיבו אליהן.
- חשוב לזכור להשהות את הפעולה כשמוצגת מודעת מעברון.
- יש כמה סוגים של מודעות מעברון: טקסט, תמונה, וידאו ועוד. חשוב לוודא שכאשר האפליקציה מציגה מודעה מסוג מודעה מעברון, היא גם משהה את השימוש שלה במשאבים מסוימים כדי לאפשר למודעה לנצל אותם. לדוגמה, כשאתם קוראים להצגת מודעה מעברון, חשוב להשהות את כל הפלט של האודיו שנוצר על ידי האפליקציה. תוכלו להמשיך את הפעלת הצלילים בשיטה
OnAdDismissedFullScreenContent
שלFullScreenContentListener
המותקן, שתופעל כשהמשתמש יסיים את האינטראקציה עם המודעה. בנוסף, מומלץ להשהות באופן זמני משימות חישוב אינטנסיביות (כמו לולאת משחק) בזמן הצגת המודעה. כך תוכלו להבטיח שהמשתמשים לא יראו גרפיקה איטית או לא רספונסיבית או סרטונים עם קטועים. - צריך להמתין מספיק זמן עד שהמודעה נטענת.
- כמו שחשוב להציג מודעות מעברון בזמן המתאים, חשוב גם לוודא שהמשתמשים לא יצטרכו להמתין עד שהן ייטענו. טעינה מראש של המודעה לפני שאתם מתכוונים להציג אותה יכולה להבטיח שבאפליקציה תהיה מוכנה מודעה מעברון טעונה במלואה כשהזמן יגיע להציג אותה.
- אסור להציף את המשתמש במודעות.
- הגדלת התדירות של מודעות מעברון באפליקציה עשויה להיראות כדרך מצוינת להגדלת ההכנסות, אבל היא גם עלולה לפגוע בחוויית המשתמש ולהוריד את שיעורי הקליקים. חשוב לוודא שההפרעות למשתמשים לא תהיינה תכופות מדי, עד כדי כך שהם לא יוכלו ליהנות מהשימוש באפליקציה.
- אין להשתמש באירוע העתידי של סיום הטעינה כדי להציג את מודעת המעברון.
- הדבר עלול לגרום לחוויית משתמש גרועה. במקום זאת, כדאי לטעון מראש את המודעה לפני שצריך להציג אותה.
מקורות מידע נוספים
דוגמה ב-GitHub
- קוד המקור של אפליקציית המדריך למתחילים שלנו זמין ב-GitHub.
מדריכי וידאו של Mobile Ads Garage
סיפורי הצלחה
השלבים הבאים
- אם עדיין לא עשיתם זאת, יוצרים יחידת מודעות מעברון משלכם בממשק המשתמש של AdMob.
- מידע נוסף על טירגוט מודעות והנחיות בנושא מודעות מעברון