تصویر میں تصویر والے اشتہارات لاگو کریں (بی ٹا)

تصویر میں تصویر

تصویر میں تصویر (PiP) اشتہارات ایک تیرتی ہوئی ونڈو میں دکھائے جاتے ہیں جو اسکرین پر موجود مواد، جیسے مضامین، فیڈز، یا گیم پلے کے اوپر رہتے ہیں۔ یہ فارمیٹ صارفین کو آپ کی ایپ کے ساتھ تعامل کرنے دیتا ہے جب تک کہ اشتہار نظر نہیں آتا۔ ایسے اشتہارات دکھانے کے لیے جو پوری اسکرین پر قبضہ نہیں کرتے، اس فارمیٹ کا انتخاب کریں۔ تصویر میں تصویر اشتہارات کے بارے میں مزید جانیں۔

یہ گائیڈ GMA Next-Gen SDK کا استعمال کرتے ہوئے آپ کی ایپ میں تصویر میں تصویری اشتہارات کی درخواست اور ڈسپلے کا احاطہ کرتا ہے۔

اس سے پہلے کہ آپ شروع کریں۔

جاری رکھنے سے پہلے، درج ذیل کام کریں:

ایک اشتہار لوڈ کریں۔

PictureInPictureAd لوڈ کرنے کے لیے، اشتہار کی درخواست بنائیں اور load طریقے کو کال کریں:

کوٹلن

private fun loadPictureInPictureAd() {
  val request = PictureInPictureAdRequest.Builder(AD_UNIT_ID).build()

  PictureInPictureAd.load(
    request,
    object : AdLoadCallback<PictureInPictureAd> {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.w(TAG, "Picture-in-Picture ad failed to load: $adError")
      }

      override fun onAdLoaded(ad: PictureInPictureAd) {
        Log.d(TAG, "Picture-in-Picture ad loaded.")

        // Capture the PictureInPictureAd reference for later use.
        pipAd = ad
        setAdEventCallback(ad)
      }
    },
  )
}

جاوا

private void loadPictureInPictureAd() {
  PictureInPictureAdRequest request = new PictureInPictureAdRequest.Builder(AD_UNIT_ID).build();

  PictureInPictureAd.load(
      request,
      new AdLoadCallback<PictureInPictureAd>() {
        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          Log.w(TAG, "Picture-in-Picture ad failed to load: " + adError);
        }

        @Override
        public void onAdLoaded(@NonNull PictureInPictureAd ad) {
          Log.d(TAG, "Picture-in-Picture ad loaded.");

          // Capture the PictureInPictureAd reference for later use.
          pipAd = ad;
          setAdEventCallback(ad);
        }
      });
}

AD_UNIT_ID اپنی اشتہار یونٹ ID سے بدل دیں۔

اشتہار دکھائیں۔

تصویر میں تصویر کا اشتہار اسکرین پر دکھانے کے لیے، اپنے تصویر میں تصویر کے اختیارات کو ترتیب دیں اور show طریقہ کار کو کال کریں۔ درج ذیل مثال اشتہار کی ڈیفالٹ پوزیشن اور پریزنٹیشن کا دائرہ سکرین پر سیٹ کرتی ہے:

کوٹلن

private fun showPictureInPictureAd(activity: Activity) {
  // Capture the ad reference saved from the onAdLoaded callback.
  val ad = pipAd
  if (ad != null) {
    val options =
      PictureInPictureAdOptions.Builder()
        // Uses the Google Mobile Ads SDK's default screen position.
        .setPosition(PictureInPictureAdPosition.DEFAULT)
        // Binds the ad lifecycle to the host screen.
        .setPresentationScope(PictureInPictureAdPresentationScope.SCREEN)
        .build()
    ad.show(activity, options)
  } else {
    Log.d(TAG, "No ad to show.")
  }
}

جاوا

private void showPictureInPictureAd(@NonNull Activity activity) {
  // Use the ad reference saved from the onAdLoaded callback.
  if (pipAd != null) {
    PictureInPictureAdOptions options =
        new PictureInPictureAdOptions.Builder()
            // Uses the Google Mobile Ads SDK's default screen position.
            .setPosition(PictureInPictureAdPosition.DEFAULT)
            // Binds the ad lifecycle to the host screen.
            .setPresentationScope(PictureInPictureAdPresentationScope.SCREEN)
            .build();
    pipAd.show(activity, options);
  } else {
    Log.d(TAG, "No ad to show.");
  }
}

پوزیشن سیٹ کریں۔

پہلے سے طے شدہ طور پر، GMA Next-Gen SDK پہلی بار دکھائے جانے پر اسکرین کے نیچے دائیں کونے میں تصویر میں تصویر والا اشتہار دکھاتا ہے، یا اگر پہلے دکھایا گیا ہو تو آخری معلوم پوزیشن پر۔ اپنی مرضی کے مطابق اشتہار کہاں ظاہر ہوتا ہے، اپنی تصویر میں تصویر کے اختیارات میں پوزیشن سیٹ کریں۔ مندرجہ ذیل مثال اسکرین کے اوپری بائیں کونے میں مواد کے اوپری حصے پر پوزیشن کا تعین کرتی ہے:

کوٹلن

private fun createTopLeftPositionOptions(): PictureInPictureAdOptions {
  return PictureInPictureAdOptions.Builder()
    // Sets the ad position to the top-left corner of the screen.
    .setPosition(PictureInPictureAdPosition.TOP_LEFT)
    .build()
}

جاوا

private PictureInPictureAdOptions createTopLeftPositionOptions() {
  return new PictureInPictureAdOptions.Builder()
      // Sets the ad position to the top-left corner of the screen.
      .setPosition(PictureInPictureAdPosition.TOP_LEFT)
      .build();
}

تمام دستیاب عہدوں کے لیے، PictureInPictureAdPosition دیکھیں۔

پریزنٹیشن کا دائرہ طے کریں۔

پہلے سے طے شدہ طور پر، GMA Next-Gen SDK ایک تصویر میں تصویر اشتہار کو موجودہ میزبان اسکرین سے منسلک کرتا ہے۔ GMA Next-Gen SDK اشتہار کو اس وقت مسترد کر دیتا ہے جب ہوسٹ اسکرین کے ویو کا درجہ بندی میموری میں نہیں رہتی ہے۔ ہوسٹ اسکرین کو میموری سے ہٹانے کے بعد اشتہار کو دکھائی دینے کے لیے، پریزنٹیشن اسکوپ کو ایپلیکیشن پر سیٹ کریں:

کوٹلن

private fun createApplicationScopedOptions(): PictureInPictureAdOptions {
  return PictureInPictureAdOptions.Builder()
    // Keeps the ad visible beyond the host screen's lifecycle.
    .setPresentationScope(PictureInPictureAdPresentationScope.APPLICATION)
    .build()
}

جاوا

private PictureInPictureAdOptions createApplicationScopedOptions() {
  return new PictureInPictureAdOptions.Builder()
      // Keeps the ad visible beyond the host screen's lifecycle.
      .setPresentationScope(PictureInPictureAdPresentationScope.APPLICATION)
      .build();
}

مزید معلومات کے لیے، اشتہار کو تمام اسکرینوں پر مرئی رکھیں دیکھیں۔

اشتھاراتی ایونٹ کال بیک سیٹ کریں۔

تصویر میں تصویر اشتہار کے لائف سائیکل ایونٹس کو ہینڈل کرنے کے لیے، اپنے اشتہار کو ڈسپلے کرنے سے پہلے ایونٹ کال بیک سیٹ کریں۔ یہ کال بیک معیاری واقعات کی اطلاع دیتا ہے، جیسے کلکس اور نقوش۔ یہ کال بیک تصویر میں تصویر کے مخصوص واقعات کی بھی اطلاع دیتا ہے جیسے کہ اشتہار کب دکھایا یا چھپا ہوا ہے:

کوٹلن

private fun setAdEventCallback(pipAd: PictureInPictureAd) {
  pipAd.adEventCallback =
    object : PictureInPictureAdEventCallback {
      override fun onAdShown() {
        Log.d(TAG, "Picture-in-Picture ad shown.")
      }

      override fun onAdHidden() {
        Log.d(TAG, "Picture-in-Picture ad hidden.")
      }

      override fun onAdImpression() {
        Log.d(TAG, "Picture-in-Picture ad recorded an impression.")
      }

      override fun onAdClicked() {
        Log.d(TAG, "Picture-in-Picture ad recorded a click.")
      }

      override fun onAdShowedFullScreenContent() {
        Log.d(TAG, "Picture-in-Picture ad showed full screen content.")
      }

      override fun onAdDismissedFullScreenContent() {
        Log.d(TAG, "Picture-in-Picture ad dismissed full screen content.")
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        Log.w(
          TAG,
          "Picture-in-Picture ad failed to show full screen content: $fullScreenContentError",
        )
      }

      override fun onAdPaid(value: AdValue) {
        Log.d(TAG, "Picture-in-Picture ad paid: ${value.valueMicros} ${value.currencyCode}")
      }
    }
}

جاوا

private void setAdEventCallback(@NonNull PictureInPictureAd pipAd) {
  pipAd.setAdEventCallback(
      new PictureInPictureAdEventCallback() {
        @Override
        public void onAdShown() {
          Log.d(TAG, "Picture-in-Picture ad shown.");
        }

        @Override
        public void onAdHidden() {
          Log.d(TAG, "Picture-in-Picture ad hidden.");
        }

        @Override
        public void onAdImpression() {
          Log.d(TAG, "Picture-in-Picture ad recorded an impression.");
        }

        @Override
        public void onAdClicked() {
          Log.d(TAG, "Picture-in-Picture ad recorded a click.");
        }

        @Override
        public void onAdShowedFullScreenContent() {
          Log.d(TAG, "Picture-in-Picture ad showed full screen content.");
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          Log.d(TAG, "Picture-in-Picture ad dismissed full screen content.");
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          Log.w(
              TAG,
              "Picture-in-Picture ad failed to show full screen content: "
                  + fullScreenContentError);
        }

        @Override
        public void onAdPaid(@NonNull AdValue value) {
          Log.d(
              TAG,
              "Picture-in-Picture ad paid: "
                  + value.getValueMicros()
                  + " "
                  + value.getCurrencyCode());
        }
      });
}

اشتہار چھپائیں۔

فلوٹنگ اشتہار کو اسکرین سے ہٹانے کے لیے، hide میتھڈ کو کال کریں۔ یہ طریقہ اشتہار میں پوشیدہ ایونٹ کال بیک کو طلب کرتا ہے:

کوٹلن

private fun hidePictureInPictureAd() {
  // Capture the ad reference saved from the onAdLoaded callback.
  val ad = pipAd
  if (ad != null) {
    ad.hide()
  } else {
    Log.d(TAG, "No ad to hide.")
  }
}

جاوا

private void hidePictureInPictureAd() {
  // Use the ad reference saved from the onAdLoaded callback.
  if (pipAd != null) {
    pipAd.hide();
  } else {
    Log.d(TAG, "No ad to hide.");
  }
}

اشتہار کے وسائل کو صاف کریں۔

میموری لیک ہونے سے بچنے کے لیے، جب آپ کی ایپ اشتہار کا استعمال مکمل کر لے تو اپنا حوالہ اشتہار آبجیکٹ پر چھوڑ دیں۔ مثال کے طور پر، جب آپ کی ایپ دوبارہ اشتہار کے ساتھ ڈسپلے یا تعامل نہیں کرتی ہے۔ اسکرین کے دائرہ کار والے اشتہارات کے لیے، جب آپ کی ایپ ہوسٹ اسکرین کو میموری سے ہٹاتی ہے تو حوالہ چھوڑ دیں۔ ایپ کے دائرہ کار والے اشتہارات کے لیے، صارف کے تمام اسکرینوں پر تشریف لے جانے کے دوران اشتہار کا حوالہ برقرار رکھیں، اور جب صارف اشتہار کو مسترد کر دے تو حوالہ چھوڑ دیں:

کوٹلن

private fun cleanUpPictureInPictureAd() {
  pipAd?.destroy()
  pipAd = null
}

جاوا

private void cleanUpPictureInPictureAd() {
  // Use the ad reference saved from the onAdLoaded callback.
  if (pipAd != null) {
    pipAd.destroy();
    pipAd = null;
  }
}

اشتہار کو تمام اسکرینوں پر دکھائی دیں۔

جب آپ پریزنٹیشن کا دائرہ ایپلیکیشن پر سیٹ کرتے ہیں، تو تصویر میں تصویر کا اشتہار تب بھی نظر آتا ہے جب آپ کی ایپ ہوسٹنگ اسکرین کو میموری سے ہٹا دیتی ہے۔ صارف کے میزبان اسکرین سے دور جانے پر اشتہار کے ساتھ تعامل کرنے یا اسے مسترد کرنے کے لیے، آپ کی ایپ کو تصویر میں تصویر والے اشتہار تک رسائی برقرار رکھنی چاہیے۔ ہم اشتہار کو سنگل اسکرین کے مثالی متغیر کے بجائے ایپ لیول سنگلٹن یا مشترکہ اسٹیٹ مینیجر میں رکھنے کی تجویز کرتے ہیں۔

کسی اشتہار کو اسکرینوں پر دکھائی دینے کے طریقے کی ایک مثال کے لیے، ہماری نمونہ ایپس دیکھیں: