מודעות במצב 'תמונה בתוך תמונה' (PiP) מוצגות בחלון צף שנשאר מעל התוכן במסך, כמו מאמרים, פידים או משחקים. הפורמט הזה מאפשר למשתמשים ליצור אינטראקציה עם האפליקציה בזמן שהמודעה מוצגת. כדי להציג מודעות לרשת המדיה שלא תופסות את כל המסך, בוחרים בפורמט הזה.
במדריך הזה מוסבר איך לבקש ולהציג מודעות בפורמט "תמונה בתוך תמונה" באפליקציה באמצעות Google Mobile Ads Unity Plugin.
לפני שמתחילים
לפני שממשיכים, צריך:
מתקינים את Google Mobile Ads Unity Plugin בגרסה
11.6.0ואילך.
- באפליקציות ל-Android, מתקינים את GMA Next-Gen SDK.
מפעילים מודעות בדיקה ומשתמשים במזהה הבא של יחידת מודעות לבדיקה:
/21775744923/example/picture-in-picture
טעינת מודעה
כדי לטעון אובייקט PictureInPictureAd, יוצרים בקשה להצגת מודעה ומפעילים את שיטת הטעינה:
מחליפים את _adUnitId במזהה יחידת המודעות.
הצגת המודעה
כדי להציג את המודעה בפורמט "תמונה בתוך תמונה" במסך, צריך להפעיל את השיטה show. בדוגמה הבאה, המודעה מוצגת במיקום ברירת המחדל:
public void ShowPictureInPictureAd() { // Use the ad reference saved from the Load callback. if (_pictureInPictureAd != null) { _pictureInPictureAd.Show(); } else { Debug.Log("No ad to show."); } }
הגדרת המיקום
כברירת מחדל, Google Mobile Ads Unity Plugin מציג מודעת "תמונה בתוך תמונה" בפינה הימנית התחתונה של המסך כשהיא מוצגת בפעם הראשונה, או במיקום האחרון הידוע אם היא הוצגה בעבר. כדי להתאים אישית את המיקום שבו המודעה מופיעה, צריך לציין מיקום כשמציגים את המודעה. בדוגמה הבאה, המודעה מוגדרת להופיע מעל התוכן בפינה השמאלית העליונה של המסך:
public void ShowPictureInPictureAdTopLeft() { // Use the ad reference saved from the Load callback. if (_pictureInPictureAd != null) { _pictureInPictureAd.Show(PictureInPictureAdPosition.TopLeft); } else { Debug.Log("No ad to show."); } }
כאןPictureInPictureAdPosition אפשר לראות את כל המשרות הפנויות.
האזנה לאירועי מודעות
כדי לטפל באירועים במחזור החיים של המודעה ב"תמונה בתוך תמונה", צריך להירשם לאירועי מודעות לפני הצגת המודעה. האירועים האלה מדווחים על אינטראקציות עם מודעות, כמו קליקים וחשיפות. האירועים האלה מדווחים גם על אירועים ספציפיים למצב "תמונה בתוך תמונה", כמו:
private void RegisterEventHandlers(PictureInPictureAd ad) { // Raised when the ad is estimated to have earned money. ad.OnAdPaid += (AdValue adValue) => { Debug.Log($"Picture-in-picture ad paid: {adValue.Value} {adValue.CurrencyCode}"); }; // Raised when an impression is recorded for an ad. ad.OnAdImpressionRecorded += () => { Debug.Log("Picture-in-picture ad recorded an impression."); }; // Raised when a click is recorded for an ad. ad.OnAdClicked += () => { Debug.Log("Picture-in-picture ad recorded a click."); }; // Raised when the picture-in-picture ad is displayed on the screen. ad.OnAdShown += () => { Debug.Log("Picture-in-picture ad shown."); }; // Raised when the picture-in-picture ad is hidden from the screen. ad.OnAdHidden += () => { Debug.Log("Picture-in-picture ad hidden."); }; // Raised when an ad opened full screen content. ad.OnAdFullScreenContentOpened += () => { Debug.Log("Picture-in-picture ad opened full screen content."); }; // Raised when the ad closed full screen content. ad.OnAdFullScreenContentClosed += () => { Debug.Log("Picture-in-picture ad closed full screen content."); }; // Raised when the ad failed to open full screen content. ad.OnAdFullScreenContentFailed += (AdError error) => { Debug.LogWarning( "Picture-in-picture ad failed to open full screen " + "content: " + error); }; }
הסתרת המודעה
כדי להסיר את המודעה הצפה מהמסך, צריך להפעיל את ה-method hide. השיטה הזו מפעילה את האירוע של הסתרת המודעה:
public void HidePictureInPictureAd() { // Use the ad reference saved from the Load callback. if (_pictureInPictureAd != null) { _pictureInPictureAd.Hide(); } else { Debug.Log("No ad to hide."); } }
ניקוי משאבי המודעות
כדי למנוע דליפות זיכרון, צריך להסיר את ההפניה לאובייקט המודעה כשהאפליקציה מסיימת להשתמש במודעה. לדוגמה, כשהאפליקציה כבר לא מציגה את המודעה או מקיימת איתה אינטראקציה:
public void DestroyPictureInPictureAd() { // Use the ad reference saved from the Load callback. if (_pictureInPictureAd != null) { _pictureInPictureAd.Destroy(); _pictureInPictureAd = null; } }