Reklamy typu obraz v obraze (PiP) sa zobrazujú v plávajúcom okne, ktoré zostáva nad obsahom na obrazovke, ako sú články, informačné kanály alebo hrateľnosť. Tento formát umožňuje používateľom interagovať s vašou aplikáciou, zatiaľ čo reklama zostáva viditeľná. Ak chcete zobrazovať reklamy, ktoré nezaberajú celú obrazovku, vyberte tento formát. Získajte viac informácií o reklamách typu obraz v obraze .
Táto príručka popisuje vyžiadanie a zobrazovanie reklám typu obraz v obraze vo vašej aplikácii pomocou GMA Next-Gen SDK .
Predtým, ako začnete
Predtým, ako budete pokračovať, vykonajte nasledujúce kroky:
Nainštalujte si GMA Next-Gen SDK verzie
1.4.0alebo novšej.Povoľte testovacie reklamy a použite nasledujúce ID testovacej reklamnej jednotky:
ca-app-pub-3940256099942544/9657123429
Načítať reklamu
Ak chcete načítať PictureInPictureAd , vytvorte požiadavku na reklamu a zavolajte metódu load :
Kotlin
Jáva
Nahraďte AD_UNIT_ID ID vašej reklamnej jednotky.
Zobraziť reklamu
Ak chcete zobraziť reklamu v režime obraz v obraze na obrazovke, nakonfigurujte možnosti režimu obraz v obraze a zavolajte metódu show . Nasledujúci príklad nastaví predvolenú pozíciu reklamy a rozsah prezentácie na obrazovku:
Kotlin
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.") } }
Jáva
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."); } }
Nastavte polohu
Súprava GMA Next-Gen SDK štandardne zobrazuje reklamu v režime obraz v obraze v pravom dolnom rohu obrazovky pri prvom zobrazení alebo na poslednej známej pozícii, ak sa zobrazovala predtým. Ak chcete prispôsobiť, kde sa reklama zobrazuje, nastavte pozíciu v možnostiach režimu obraz v obraze. Nasledujúci príklad nastavuje pozíciu nad obsahom v ľavom hornom rohu obrazovky:
Kotlin
private fun createTopLeftPositionOptions(): PictureInPictureAdOptions { return PictureInPictureAdOptions.Builder() // Sets the ad position to the top-left corner of the screen. .setPosition(PictureInPictureAdPosition.TOP_LEFT) .build() }
Jáva
private PictureInPictureAdOptions createTopLeftPositionOptions() { return new PictureInPictureAdOptions.Builder() // Sets the ad position to the top-left corner of the screen. .setPosition(PictureInPictureAdPosition.TOP_LEFT) .build(); }
Všetky dostupné pozície nájdete v PictureInPictureAdPosition .
Nastavenie rozsahu prezentácie
Súprava GMA Next-Gen SDK štandardne viaže reklamu typu obraz v obraze k aktuálnej obrazovke hostiteľa. GMA Next-Gen SDK reklamu zatvorí, keď hierarchia zobrazení obrazovky hostiteľa už nie je v pamäti. Ak chcete, aby reklama zostala viditeľná aj po odstránení obrazovky hostiteľa z pamäte, nastavte rozsah prezentácie na aplikáciu:
Kotlin
private fun createApplicationScopedOptions(): PictureInPictureAdOptions { return PictureInPictureAdOptions.Builder() // Keeps the ad visible beyond the host screen's lifecycle. .setPresentationScope(PictureInPictureAdPresentationScope.APPLICATION) .build() }
Jáva
private PictureInPictureAdOptions createApplicationScopedOptions() { return new PictureInPictureAdOptions.Builder() // Keeps the ad visible beyond the host screen's lifecycle. .setPresentationScope(PictureInPictureAdPresentationScope.APPLICATION) .build(); }
Viac informácií nájdete v časti Udržujte reklamu viditeľnú na všetkých obrazovkách .
Nastavenie spätného volania reklamnej udalosti
Ak chcete spracovať udalosti životného cyklu reklamy typu obraz v obraze, nastavte na reklamu pred jej zobrazením spätné volanie udalosti. Toto spätné volanie hlási štandardné udalosti, ako sú kliknutia a zobrazenia. Toto spätné volanie tiež hlási udalosti špecifické pre obraz v obraze, napríklad kedy sa reklama zobrazí alebo skryje:
Kotlin
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}") } } }
Jáva
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()); } }); }
Skryť reklamu
Ak chcete odstrániť plávajúcu reklamu z obrazovky, zavolajte metódu hide . Táto metóda vyvolá spätné volanie udalosti ad hidden:
Kotlin
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.") } }
Jáva
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."); } }
Vyčistite reklamné zdroje
Aby ste predišli úniku pamäte, odstráňte odkaz na reklamný objekt, keď vaša aplikácia prestane používať reklamu. Napríklad, keď vaša aplikácia už reklamu nezobrazuje alebo s ňou znova neinteraguje. V prípade reklám s rozsahom obrazovky odstráňte odkaz, keď vaša aplikácia odstráni hostiteľskú obrazovku z pamäte. V prípade reklám s rozsahom aplikácie si ponechajte odkaz na reklamu, kým používateľ prechádza medzi obrazovkami, a odstráňte ho, keď používateľ reklamu zavrie:
Kotlin
private fun cleanUpPictureInPictureAd() { pipAd?.destroy() pipAd = null }
Jáva
private void cleanUpPictureInPictureAd() { // Use the ad reference saved from the onAdLoaded callback. if (pipAd != null) { pipAd.destroy(); pipAd = null; } }
Udržujte reklamu viditeľnú na všetkých obrazovkách
Keď nastavíte rozsah prezentácie na aplikáciu, reklama obraz v obraze zostane viditeľná aj vtedy, keď vaša aplikácia odstráni hostiteľskú obrazovku z pamäte. Ak chcete s reklamou interagovať alebo ju zatvoriť, keď používateľ opustí hostiteľskú obrazovku, vaša aplikácia si musí zachovať prístup k reklame obraz v obraze. Odporúčame uchovávať reklamu v singletonovom objekte na úrovni aplikácie alebo v zdieľanom správcovi stavu, a nie v premennej inštancie jednej obrazovky.
Príklad toho, ako zabezpečiť viditeľnosť reklamy na všetkých obrazovkách, nájdete v našich vzorových aplikáciách: