הגדרת מודעות בפתיחת האפליקציה

בחירת פלטפורמה: Android iOS Unity Flutter Android (Legacy)

מודעות בפתיחת אפליקציה הן פורמט מודעה שמיועד לבעלי אפליקציות שרוצים לייצר הכנסות ממסכי הטעינה של האפליקציה שלהם. המשתמשים יכולים לסגור את המודעות לפתיחת אפליקציות בכל שלב. כשמשתמשים מעבירים את האפליקציה שלכם לחזית, מציגים מודעות בפתיחת האפליקציה.

מידע נוסף זמין במאמר בנושא הנחיות לגבי מודעות לפתיחת אפליקציות.

במדריך הזה מוסבר איך לשלב מודעות לפתיחת אפליקציות באפליקציה ל-Android.

לפני שמתחילים

לפני שממשיכים, צריך:

  • הגדרה של GMA Next-Gen SDK
  • משתמשים במזהה יחידת המודעות לבדיקה של יחידת מודעות להצגה בפתיחת אפליקציה ca-app-pub-3940256099942544/9257395921.
    • כשמפתחים את האפליקציה ובודקים אותה, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות לפרסום מוצרים. אם לא תשתמשו במזהה יחידת המודעות הייעודית לבדיקה, Google עשויה להשעות את החשבון שלכם.
    • לפני שמפרסמים את האפליקציה, מחליפים את המזהה הזה במזהה של יחידת המודעות.
    • פרטים על GMA Next-Gen SDK מודעות בדיקה זמינים במאמר הפעלת מודעות בדיקה.

הסבר על טעינת מודעות מראש (בטא)

טעינה מראש של מודעות ב-GMA Next-Gen SDK מאפשרת לטעון מודעות ולשמור אותן במטמון באופן אוטומטי.

טעינה מראש של מודעות מספקת את היתרונות הבאים:

  • ניהול הפניות: שמירה על הפניות עד להצגת המודעות.
  • טעינה מחדש אוטומטית: טעינה של מודעה חדשה כשמאחזרים מודעה מהמטמון.
  • ניסיונות חוזרים מנוהלים: טעינת מודעה חדשה אם טעינת מודעה נכשלה.
  • טיפול בתפוגה: רענון המודעות לפני שהן פגות.
  • אופטימיזציה של מטמון: אופטימיזציה של סדר המטמון כדי להציג את המודעה עם העדיפות הכי גבוהה.
הערה: כדי לטעון מודעות באופן ידני, אפשר לעיין במאמר טעינה של מודעה אחת בפתיחת האפליקציה.

התחלת טעינת מודעות מראש

כדי להתחיל בטעינה מראש של מודעות, קוראים לשיטה startPreload() פעם אחת בהפעלת האפליקציה. אחרי שמפעילים את השיטה startPreload(), המודעות נטענות מראש באופן אוטומטי ומתבצע ניסיון חוזר לבקשות שנכשלו להגדרות שנטענו מראש.GMA Next-Gen SDK

בדוגמה הבאה אפשר לראות איך מתחילים לטעון מראש מודעות:

Kotlin

val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
AppOpenAdPreloader.start(adUnitId, preloadConfig)

Java

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
AppOpenAdPreloader.start(adUnitId, preloadConfig);

מחליפים את AD_UNIT_ID במזהה יחידת המודעות.

בדוגמה הקודמת אפשר לראות איך משתמשים במזהה יחידת המודעות כמזהה הטעינה מראש. מזהה טעינה מראש הוא מזהה מחרוזת שאתם יוצרים כדי לזהות הגדרת טעינת מודעה מראש. אם האפליקציה דורשת כמה הגדרות טירגוט לאותו מזהה של יחידת מודעות, צריך להעביר מזהה מחרוזת בהתאמה אישית.

אחזור והצגה של המודעה שנטענה מראש

כשרוצים להציג מודעה, מפעילים את method‏ pollAd(). ‫GMA Next-Gen SDK מאחזר מודעה זמינה וטוען מראש באופן אוטומטי את המודעה הבאה ברקע. אם אין מודעות זמינות, הפונקציה GMA Next-Gen SDK לא מחזירה מודעות.

כשיש אובייקט מודעה זמין, קוראים לשיטה show כדי להציג את המודעה. בדוגמה הבאה אפשר לראות איך מאחזרים ומציגים מודעה שנטענה מראש:

Kotlin

private fun pollAndShowAd(activity: Activity, adUnitId: String) {
  // Polling returns the next available ad and loads another ad in the background.
  val ad = AppOpenAdPreloader.pollAd(adUnitId)
  if (ad == null) {
    Log.e(TAG, "App open ad is not available.")
    return
  }

  // Interact with the ad object as needed.
  Log.d(TAG, "App open ad response info: ${ad.getResponseInfo()}")
  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdImpression() {
        Log.d(TAG, "App open ad recorded an impression.")
      }
    }
  ad.show(activity)
}

Java

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  AppOpenAd ad = AppOpenAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad == null) {
    Log.e(TAG, "App open ad is not available.");
    return;
  }

  Log.d(TAG, "App open ad response info: " + ad.getResponseInfo());
  ad.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdImpression() {
          Log.d(TAG, "App open ad recorded an impression.");
        }
      });

  // Show the ad.
  ad.show(activity);
}

עד שתהיו מוכנים להציג מודעה, אל תפעילו את ה-method‏ pollAd(). כדי לקרוא את פרטי התגובה למודעה בלי להציג אותם, אפשר לעיין במאמר בנושא קריאת פרטי התגובה.

האזנה לאירועים של מודעות

לפני הצגת המודעה, צריך להאזין לאירועים שקשורים למודעה. בדוגמה הבאה רשומות קריאות חוזרות (callback) לאירועים שקשורים למודעות:

Kotlin

private fun listenToAdEvents() {
  // Listen for ad events.
  val ad = appOpenAd
  if (ad == null) {
    Log.e(TAG, "App open ad is not ready yet.")
    return
  }

  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // App open ad did show.
      }

      override fun onAdDismissedFullScreenContent() {
        // App open ad did dismiss.
        appOpenAd = null
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        // App open ad failed to show.
        Log.e(TAG, "App open ad failed to show: ${fullScreenContentError.message}")
      }

      override fun onAdImpression() {
        // App open ad did record an impression.
      }

      override fun onAdClicked() {
        // App open ad did record a click.
      }
    }
}

Java

private void listenToAdEvents() {
  // Listen for ad events.
  if (appOpenAd == null) {
    Log.e(TAG, "App open ad is not ready yet.");
    return;
  }

  appOpenAd.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          // App open ad did show.
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // App open ad did dismiss.
          appOpenAd = null;
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          // App open ad failed to show.
          Log.e(TAG, "App open ad failed to show: " + fullScreenContentError.getMessage());
        }

        @Override
        public void onAdImpression() {
          // App open ad did record an impression.
        }

        @Override
        public void onAdClicked() {
          // App open ad did record a click.
        }
      });
}

אופציונלי: המתנה לאירועים של טעינה מראש

כשמתחילים לטעון מראש מודעות, צריך להירשם לאירועי טעינה מראש כדי לקבל הודעה אם הטעינה מראש של המודעות הצליחה, אם היא נכשלה או אם המטמון של המודעות מוצה.

בדוגמה הבאה אפשר לראות איך נרשמים לאירועים של טעינה מראש של מודעות:

Kotlin

val preloadCallback =
  object : PreloadCallback {
    override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
      Log.d(TAG, "App open preload ad $preloadId failed to load with error: ${adError.message}")
    }

    override fun onAdsExhausted(preloadId: String) {
      Log.i(TAG, "App open preload ad $preloadId is not available")
    }

    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
      Log.i(TAG, "App open preload ad $preloadId is available")
    }
  }
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

Java

PreloadCallback preloadCallback =
    new PreloadCallback() {
      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(
            TAG,
            String.format(
                "App open preload ad %s failed to load with error: %s",
                preloadId, adError.getMessage()));
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        Log.i(TAG, String.format("App open preload ad %s is not available", preloadId));
      }

      @Override
      public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        Log.i(TAG, String.format("App open preload ad %s is available", preloadId));
      }
    };
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

אם מודעה לא נטענת, GMA Next-Gen SDK טוען מראש מודעות באופן אוטומטי ומנסה שוב בקשות שנכשלו להגדרות שנטענו מראש.

אופציונלי: בדיקת הזמינות של מודעות

אם אתם רוצים לדעת אם יש מודעה זמינה, אתם יכולים לבדוק את זמינות המודעה. בדוגמה הבאה בודקים אם מודעה שנטענה מראש זמינה:

Kotlin

private fun isAdAvailable(adUnitId: String): Boolean {
  return AppOpenAdPreloader.isAdAvailable(adUnitId)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return AppOpenAdPreloader.isAdAvailable(adUnitId);
}

אופציונלי: הגדרת גודל מאגר הנתונים הזמני

הגודל של שטח האחסון הזמני קובע את מספר המודעות שנטענות מראש ונשמרות בזיכרון. כברירת מחדל, Google מבצעת אופטימיזציה של שטח אחסון זמני כדי לאזן בין צריכת הזיכרון לבין זמן האחזור של הצגת המודעות. אתם יכולים להגדיר גודל שטח אחסון זמני מותאם אישית כדי להגדיל את מספר המודעות שנשמרות בזיכרון. מומלץ להגדיר גודל של שטח אחסון זמני של שתי מודעות שנטענו מראש.

בדוגמה הבאה אפשר לראות איך מגדירים את גודל המאגר:

Kotlin

val adRequest = AdRequest.Builder(adUnitId).build()
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2)
AppOpenAdPreloader.start(adUnitId, preloadConfig)

Java

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2);
AppOpenAdPreloader.start(adUnitId, preloadConfig);

מגבלות של טעינה מראש למטמון

‫GMA Next-Gen SDK אוכף מגבלה ברמת האפליקציה על המספר הכולל של מודעות שנטענו מראש בכל יחידות המודעות ובכל מזהי הטעינה מראש:

  • מגבלת ברירת מחדל: Google שומרת בזיכרון עד שש מודעות שנטענו מראש. המגבלה הזו משותפת לכל הפורמטים ולכל מזהי הטעינה מראש.
  • מומלץ להגדיר שטח אחסון זמני של שניים לכל מזהה טעינה מראש.

אופציונלי: הפסקת הטעינה מראש של מודעות

אם אתם לא רוצים להציג שוב מודעות עם מזהה טעינה מראש ספציפי במהלך הסשן, אתם יכולים להפסיק את הטעינה מראש של המודעות. כדי להפסיק לטעון מודעות עבור מזהה טעינה מראש ספציפי, צריך להתקשר לשיטת destroy() עם מזהה טעינה מראש. הפעלת השיטה destroy() מסירה מהמטמון את כל המודעות שנטענו מראש שמשויכות למזהה הטעינה מראש.

בדוגמה הבאה אפשר לראות איך מפסיקים את הטעינה מראש של מודעות:

Kotlin

private fun stopPreloading(adUnitId: String) {
  // Stops the preloading and destroy preloaded ads.
  AppOpenAdPreloader.destroy(adUnitId)
}

Java

private void stopPreloading(String adUnitId) {
  // Stops the preloading and destroy preloaded ads.
  AppOpenAdPreloader.destroy(adUnitId);
}

אופציונלי: קוראים את פרטי התשובה

קריאת פרטי התגובה של המודעה הבאה שנטענה מראש בלי להסיר את המודעה מהמטמון.

בדוגמה הבאה אפשר לראות איך קוראים את פרטי התגובה של המודעה הבאה שנטענה מראש:

Kotlin

val responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId)
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.")
  return
}

Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")

Java

ResponseInfo responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.");
  return;
}

Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());

טיפול בהפעלות במצב התחלתי (cold start) ובמסכי טעינה

הפעלה במצב התחלתי (cold start) מתרחשת כשהאפליקציה מופעלת מהדיסק, והפעלה במצב ביניים (warm start) מתרחשת כשפותחים מחדש את האפליקציה מהזיכרון. במהלך הפעלה במצב התחלתי (cold start), אין לכם מודעה שנטענה מראש להצגה מיידית. במהלך הפעלה במצב ביניים (Warm start), יכול להיות שעדיין יהיה לכם מודעה שנטענה מראש ומוכנה להצגה.

במהלך הפעלה במצב התחלתי (cold start), יכול להיות שהמשתמשים יקיימו אינטראקציה עם האפליקציה לפני שהיא תיטען ותציג מודעה. כדי להימנע מחוויית משתמש גרועה, מומלץ להציג מודעות בפתיחת האפליקציה בהפעלות קרות רק ממסך טעינה בזמן שנכסי האפליקציה נטענים. אם טעינת הנכס מסתיימת והמשתמש מגיע לתוכן הראשי לפני שהמודעה נטענת, אל תציגו את המודעה.

המלצות

המלצות לשימוש במודעות בפתיחת אפליקציה:

  • אין להציג מודעה בפתיחת האפליקציה בהפעלה הראשונה של האפליקציה.
  • אם מסך הטעינה סיים את הטעינה בזמן שהמודעה מוצגת, צריך לבטל את מסך הטעינה בשיטת הקריאה החוזרת (callback) של ביטול המודעה.
  • התוקף של מודעות בפתיחת האפליקציה פג ארבע שעות אחרי הטעינה. אל תציגו מודעה בפתיחת האפליקציה שנמצאת במצב טעינה יותר מארבע שעות.