מודעות מעברון הן מודעות שמופיעות במסך מלא ומכסות את הממשק של האפליקציה עד שהמשתמש סוגר אותן. הן מוצגות בדרך כלל בנקודות מעבר טבעיות בזרימה של האפליקציה, למשל בין פעילויות או במהלך ההשהיה בין שלבים במשחק. כשמודעת מעברון מוצגת באפליקציה, המשתמש יכול ללחוץ על המודעה ולהמשיך ליעד שלה, או לסגור אותה ולחזור לאפליקציה. מחקר מקרה.
במדריך הזה מוסבר איך לשלב מודעות ביניים באפליקציות ל-Android ול-iOS באמצעות Google Mobile Ads C++ SDK.
דרישות מוקדמות
- משלימים את השלבים במאמר תחילת העבודה.
- (Android בלבד) היכרות עם עבודה עם הפניות של JNI
jobject(ראו טיפים ל-Android JNI).
תמיד כדאי לבצע בדיקות באמצעות מודעות בדיקה
כשמפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות לפרסום מוצרים. אם לא תעשו את זה, אנחנו עלולים להשעות את החשבון שלכם.
הדרך הכי קלה לבדוק את הטעינה של מודעות היא להשתמש במזהה יחידת מודעות ייעודית לבדיקה של מודעות מעברון, שמשתנה בהתאם לפלטפורמת המכשיר:
- Android:
ca-app-pub-3940256099942544/1033173712 - iOS:
ca-app-pub-3940256099942544/4411468910
הם הוגדרו במיוחד כדי להחזיר לכל בקשה מודעות בדיקה, ואתם יכולים להשתמש בהם באפליקציות שלכם בזמן כתיבת קוד, בדיקה וניפוי באגים. חשוב להקפיד להחליף אותו במזהה יחידת המודעות שלכם לפני שמפרסמים את האפליקציה.
מידע נוסף על אופן הפעולה של מודעות הבדיקה ב-Mobile Ads SDK זמין במאמר בנושא מודעות בדיקה.
הטמעה
השלבים העיקריים לשילוב מודעות מעברון הם:
- טוענים מודעה.
- רישום לקריאות חוזרות (callback).
- הצגת המודעה וטיפול באירועים במחזור החיים שלה.
הגדרת InterstitialAd
מודעות מעברון מוצגות באובייקטים מסוג InterstitialAd, ולכן השלב הראשון בשילוב מודעות מעברון באפליקציה הוא ליצור אובייקט מסוג InterstitialAd ולהפעיל אותו.
מוסיפים את הכותרת הבאה לקוד C++ של האפליקציה:
#include "firebase/gma/interstial_ad.h"
מצהירים על אובייקט
InterstitialAdויוצרים מופע שלו:firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
מאתחלים את מופע
InterstitialAdבאמצעות שידור של תצוגת האב לסוגAdParent. תצוגת ההורה היא הפניה ל-JNIjobjectל-AndroidActivityאו מצביע ל-iOSUIView.// 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);במקום לשמור את העתיד כמשתנה, אפשר לבדוק מעת לעת את הסטטוס של פעולת האתחול על ידי הפעלת
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 זמין במאמר שימוש ב-Futures כדי לעקוב אחר סטטוס ההשלמה של קריאות לשיטות.
טעינת מודעה
טעינה של מודעה מתבצעת באמצעות השיטה 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(), והיא תקבל קריאות חוזרות (callback) כשהמודעה תוצג בהצלחה או ללא הצלחה, וגם כשהיא תיסגר.
בדוגמה הבאה אפשר לראות איך מרחיבים את המחלקה ומשייכים אותה למודעה:
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 כדי לקבוע מתי תוכן במסך מלא של מודעה הוצג, אבל הערך Future שמוחזר על ידי Show() יאותת גם מתי המודעה הוצגה בהצלחה.
firebase::Future<void> result = interstitial_ad->Show();
שיטות מומלצות
- כדאי לשקול אם מודעות מעברון הן סוג המודעה המתאים לאפליקציה שלכם.
- מודעות מעברון מתאימות במיוחד לאפליקציות עם נקודות מעבר טבעיות. נקודות מעבר יכולות להיות למשל סיום של משימה כלשהי באפליקציה, כמו שיתוף תמונה או השלמת שלב במשחק. המשתמש מצפה להפסקה בפעולה, ולכן קל להציג מודעת מעברון בלי להפריע לחוויית השימוש שלו. חשוב להביא בחשבון באילו נקודות בתהליך העבודה של האפליקציה תוצגנה מודעות מעברון ואיך המשתמשים צפויים להגיב.
- חשוב להשהות את הפעולה כשמציגים מודעת מעברון.
- יש כמה סוגים שונים של מודעות מעברון: טקסט, תמונה, וידאו ועוד. חשוב לוודא שכאשר האפליקציה מציגה מודעת מעברון, היא גם משעה את השימוש בחלק מהמשאבים כדי לאפשר למודעה לנצל אותם. לדוגמה, כשמבצעים קריאה להצגת מודעת מעברון, חשוב להשהות את כל פלט האודיו שנוצר על ידי האפליקציה. אפשר להמשיך להפעיל צלילים בשיטה
OnAdDismissedFullScreenContentשלFullScreenContentListenerהמותקן, שתופעל כשהמשתמש יסיים את האינטראקציה עם המודעה. בנוסף, כדאי להשהות באופן זמני משימות חישוב אינטנסיביות (כמו game loop) בזמן שהמודעה מוצגת. כך תוכלו לוודא שהמשתמש לא יחווה גרפיקה איטית או לא רספונסיבית או סרטון מגמגם. - חשוב להקצות מספיק זמן לטעינה.
- חשוב לוודא שהמודעות המעברוניות מוצגות בזמן המתאים, וגם שהמשתמש לא צריך לחכות שהן ייטענו. טעינת המודעה מראש לפני שמתכוונים להציג אותה יכולה להבטיח שהאפליקציה תהיה מוכנה עם מודעת מעברון שנטענה במלואה כשיגיע הזמן להציג אותה.
- אל תציפו את המשתמש במודעות.
- הגברת תדירות ההצגה של מודעות המעברון באפליקציה אולי נראית כמו דרך טובה להגדיל את ההכנסות, אבל היא גם עלולה לפגוע בחוויית השימוש ולהקטין את שיעורי הקליקים. חשוב לוודא שההפרעות לא תכופות מדי, כדי שהמשתמשים יוכלו ליהנות מהשימוש באפליקציה.
- אל תשתמשו ב-load completion future כדי להציג את מודעת המעברון.
- הדבר עלול לפגוע בחוויית המשתמש. במקום זאת, טוענים מראש את המודעה לפני שצריך להציג אותה.
מקורות מידע נוספים
דוגמה ב-GitHub
- אפשר לראות את קוד המקור של אפליקציית ההפעלה המהירה לדוגמה שלנו ב-GitHub.
מדריכי וידאו של Mobile Ads Garage
סיפורי הצלחה
השלבים הבאים
- אם עוד לא עשיתם זאת, צרו יחידת מודעות מעברון משלכם בממשק המשתמש של AdMob.
- מידע נוסף על טירגוט מודעות והנחיות לשימוש במודעות מעברון