Attēla attēlā (PiP) reklāmas tiek rādītas peldošā logā, kas paliek virs ekrānā redzamā satura, piemēram, rakstiem, plūsmām vai spēlēm. Šis formāts ļauj lietotājiem mijiedarboties ar jūsu lietotni, kamēr reklāma paliek redzama. Lai rādītu reklāmas, kas neaizņem visu ekrānu, izvēlieties šo formātu. Uzziniet vairāk par attēla attēlā reklāmām .
Šajā rokasgrāmatā ir aprakstīta attēla attēlā reklāmu pieprasīšana un rādīšana lietotnē, izmantojot GMA Next-Gen SDK .
Pirms sākat
Pirms turpināt, veiciet tālāk norādītās darbības.
Instalējiet GMA Next-Gen SDK
1.4.0vai jaunāku versiju.Iespējojiet testa reklāmas un izmantojiet šādu testa reklāmu vienības ID:
ca-app-pub-3940256099942544/9657123429
Ielādēt reklāmu
Lai ielādētu PictureInPictureAd , izveidojiet reklāmas pieprasījumu un izsauciet load metodi:
Kotlins
Java
Aizstājiet AD_UNIT_ID ar savas reklāmas vienības ID.
Rādīt reklāmu
Lai ekrānā parādītu attēla attēlā reklāmu, konfigurējiet attēla attēlā opcijas un izsauciet metodi show . Šajā piemērā tiek iestatīta reklāmas noklusējuma pozīcija un prezentācijas tvērums ekrānā:
Kotlins
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.") } }
Java
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."); } }
Iestatiet pozīciju
Pēc noklusējuma GMA Next-Gen SDK pirmo reizi parādot attēlu attēlā reklāmu, tā tiek rādīta ekrāna apakšējā labajā stūrī vai pēdējā zināmajā pozīcijā, ja tāda ir rādīta iepriekš. Lai pielāgotu reklāmas rādīšanas vietu, iestatiet pozīciju attēla attēlā opcijās. Šajā piemērā pozīcija satura augšpusē tiek iestatīta ekrāna augšējā kreisajā stūrī:
Kotlins
private fun createTopLeftPositionOptions(): PictureInPictureAdOptions { return PictureInPictureAdOptions.Builder() // Sets the ad position to the top-left corner of the screen. .setPosition(PictureInPictureAdPosition.TOP_LEFT) .build() }
Java
private PictureInPictureAdOptions createTopLeftPositionOptions() { return new PictureInPictureAdOptions.Builder() // Sets the ad position to the top-left corner of the screen. .setPosition(PictureInPictureAdPosition.TOP_LEFT) .build(); }
Visas pieejamās pozīcijas skatiet PictureInPictureAdPosition .
Iestatiet prezentācijas tvērumu
Pēc noklusējuma GMA Next-Gen SDK saista attēla attēlā reklāmu ar pašreizējo resursdatora ekrānu. GMA Next-Gen SDK noraida reklāmu, ja resursdatora ekrāna skata hierarhija vairs nav atmiņā. Lai reklāma paliktu redzama pēc resursdatora ekrāna noņemšanas no atmiņas, iestatiet prezentācijas tvērumu uz lietojumprogrammu:
Kotlins
private fun createApplicationScopedOptions(): PictureInPictureAdOptions { return PictureInPictureAdOptions.Builder() // Keeps the ad visible beyond the host screen's lifecycle. .setPresentationScope(PictureInPictureAdPresentationScope.APPLICATION) .build() }
Java
private PictureInPictureAdOptions createApplicationScopedOptions() { return new PictureInPictureAdOptions.Builder() // Keeps the ad visible beyond the host screen's lifecycle. .setPresentationScope(PictureInPictureAdPresentationScope.APPLICATION) .build(); }
Plašāku informāciju skatiet sadaļā Reklāmas redzamības saglabāšana dažādos ekrānos .
Iestatīt reklāmas notikuma atzvanīšanas funkciju
Lai apstrādātu attēla attēlā reklāmas dzīves cikla notikumus, pirms reklāmas rādīšanas iestatiet tai notikuma atzvanīšanas funkciju. Šī atzvanīšanas funkcija ziņo par standarta notikumiem, piemēram, klikšķiem un iespaidiem. Šī atzvanīšanas funkcija ziņo arī par attēla attēlā specifiskiem notikumiem, piemēram, reklāmas rādīšanas vai paslēpšanas laiku:
Kotlins
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}") } } }
Java
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()); } }); }
Paslēpt reklāmu
Lai noņemtu peldošo reklāmu no ekrāna, izsauciet metodi hide . Šī metode izsauc notikuma “ad hidden” atzvanīšanas funkciju:
Kotlins
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.") } }
Java
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."); } }
Reklāmu resursu sakopšana
Lai izvairītos no atmiņas noplūdēm, izmetiet atsauci uz reklāmas objektu, kad lietotne beidz izmantot reklāmu. Piemēram, ja lietotne vairs nerāda reklāmu vai nemijiedarbojas ar to. Ekrāna darbības jomas reklāmām izmetiet atsauci, kad lietotne noņem resursdatora ekrānu no atmiņas. Lietotnes darbības jomas reklāmām saglabājiet reklāmas atsauci, kamēr lietotājs pārvietojas starp ekrāniem, un izmetiet atsauci, kad lietotājs aizver reklāmu:
Kotlins
private fun cleanUpPictureInPictureAd() { pipAd?.destroy() pipAd = null }
Java
private void cleanUpPictureInPictureAd() { // Use the ad reference saved from the onAdLoaded callback. if (pipAd != null) { pipAd.destroy(); pipAd = null; } }
Saglabājiet reklāmu redzamu dažādos ekrānos
Ja prezentācijas tvērumu iestatāt lietojumprogrammai, attēla attēlā reklāma paliek redzama pat tad, ja lietotne no atmiņas noņem mitināšanas ekrānu. Lai mijiedarbotos ar reklāmu vai to aizvērtu, kad lietotājs pāriet prom no mitināšanas ekrāna, lietotnei ir jāsaglabā piekļuve attēla attēlā reklāmai. Iesakām reklāmu glabāt lietotnes līmeņa atsevišķā vai koplietojamā stāvokļa pārvaldniekā, nevis atsevišķa ekrāna instances mainīgajā.
Lai skatītu piemēru, kā nodrošināt reklāmas redzamību dažādos ekrānos, skatiet mūsu lietotņu paraugus: