カスタムの広告非表示機能(ネイティブ広告)

ユーザーは、広告を非表示にする機能(Mute This Ad)を使って、広告を閉じたり表示を停止したりして、広告に興味がないことを示すことができます。カスタムではないデフォルトのバージョンは次のように表示されます。

カスタマイズされていない広告非表示機能

UnifiedNativeAd を使用すると、ネイティブ広告を非表示にする機能を独自のユーザー インターフェースで提供できます。手順は次のとおりです。

カスタムの広告非表示機能をリクエストする

まずは、広告リクエストの際に、 setRequestCustomMuteThisAdNativeAdOptions.Builder クラスで使用して、 カスタムの広告非表示機能を有効にします。

Java

    AdLoader adLoader = new AdLoader.Builder(context, "ad unit ID")
        .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
            @Override
            public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
                // Show the ad.
            }
        })
        .withAdListener(new AdListener() {
            @Override
            public void onAdFailedToLoad(int errorCode) {
                // Handle the failure by logging, altering the UI, and so on.
            }
        })
        .withNativeAdOptions(new NativeAdOptions.Builder()
                             .setRequestCustomMuteThisAd(true)
                             .build())
        .build();

    adLoader.loadAd(new AdRequest.Builder().build());
    

Kotlin

    val adLoader = AdLoader.Builder(context, "ad unit ID")
        .forUnifiedNativeAd { ad ->
                // Show the ad
            }
        .withAdListener(object : AdListener() {
              override fun onAdFailedToLoad(errorCode: Int) {
                // Handle the failure by logging, altering the UI, and so on.
              }
            })
        .withNativeAdOptions(NativeAdOptions.Builder()
                             .setRequestCustomMuteThisAd(true)
                             .build())
        .build()

    adLoader.loadAd(AdRequest.Builder().build())
    

カスタムの広告非表示機能が利用可能かどうかを確認する

ネイティブ広告が読み込まれたら、UnifiedNativeAd オブジェクトの isCustomMuteThisAdEnabled() メソッドから返された値を確認します。true なら、カスタムの非表示ボタンやジェスチャーを追加し、UnifiedNativeAd オブジェクトの getMuteThisAdReasons() メソッドから利用可能な MuteThisAdReason を取得して、広告を非表示にするためのカスタムのインターフェースを設定します。

Java

    // In OnUnifiedNativeAdLoadedListener
    @Override
    public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
      // Show the ad.
      ...
      this.nativeAdView.setNativeAd(unifiedNativeAd);

      if (nativeAd.isCustomMuteThisAdEnabled()) {
        enableCustomMuteWithReasons(nativeAd.getMuteThisAdReasons());
      } else {
        hideCustomMute();
      }
    }
    ...

    private void enableCustomMuteWithReasons(List<MuteThisAdReason> reasons) {
      //TODO: This method should show your custom mute button and provide the list
      // of reasons to the interface that are to be displayed when the user mutes
      // the ad.
    }

    private void hideCustomMute() {
      //TODO: Remove / hide the custom mute button from your user interface.
    }
    

Kotlin

    // When constructing the ad loader.
    builder.forUnifiedNativeAd { unifiedNativeAd ->
       // Show the ad.
      ...
      this.nativeAdView.nativeAd = nativeAd

      if (nativeAd.isCustomMuteThisAdEnabled) {
        enableCustomMuteWithReasons(nativeAd.muteThisAdReasons);
      } else {
        hideCustomMute();
      }
    }
    ...
    private fun enableCustomMuteWithReasons(reasons: List<MuteThisAdReason>) {
      //TODO: This method should show your custom mute button and provide the list
      // of reasons to the interface that are to be displayed when the user mutes
      // the ad.
    }

    private fun hideCustomMute() {
      //TODO: Remove / hide the custom mute button from your user interface.
    }
    

カスタムの非表示機能のインターフェースは自由にカスタマイズでき、小さな閉じるボタンを広告に配置することも、他のインターフェースを提供することもできます。

広告を非表示にする理由を表示する

カスタムの広告非表示機能を利用できる場合は、 UnifiedNativeAdmuteThisAdReasons プロパティで利用できる MuteThisAdReason オブジェクトの配列があります。 MuteThisAdReason には、表示可能な文字列を提供する getDescription() メソッドがあります。

これらの文字列をユーザーに表示して、ユーザーが広告を非表示にする理由を選択できるようにするとよいでしょう。ユーザーが理由のひとつをクリックすると、広告を非表示にしたことを、選択した理由とともにレポートできます。

または、ユーザーが閉じるボタンをクリックした際にこれらの理由を表示せず、ミュート アクションを理由なしでレポートすることもできます。

広告を非表示にする

広告の非表示には、次の 2 つの操作が関係しています。

  1. UnifiedNativeAdmuteThisAd メソッドを使用して、 ネイティブ広告に非表示の 理由をレポートする

  2. 独自のユーザー インターフェースで、任意の方法で広告をミュートまたは非表示にする

Java

    private void muteAdDialogDidSelectReason(MuteThisAdReason reason) {
      // Report the mute action and reason to the ad.
      nativeAd.muteThisAd(reason);
      muteAd();
    }

    private void muteAd {
      //TODO: Mute / hide the ad in your preferred manner.
    }
    

Kotlin

    private fun muteAdDialogDidSelectReason(reason: MuteThisAdReason) {
        // Report the mute action and reason to the ad.
        nativeAd.muteThisAd(reason)
        muteAd()
    }

    private fun muteAd() {
      //TODO: Mute / hide the ad in your preferred manner.
    }
    

広告の非表示の確認を受け取る(省略可)

広告の非表示が正常に行われたときに通知を受け取るには、 UnifiedNativeAdsetMuteThisAdListener メソッドを使って設定する MuteThisAdListener を実装します。onAdMuted() メソッドは、広告の非表示が正常に行われた場合にのみ呼び出されます。

Java

    nativeAd.setMuteThisAdListener(new MuteThisAdListener() {
      @Override
      public void onAdMuted() {
        Toast.makeText(getActivity(), "Ad muted", Toast.LENGTH_SHORT).show();
      }
    });
    

Kotlin

    nativeAd.setMuteThisAdListener {
        Toast.makeText(activity, "Ad muted", Toast.LENGTH_SHORT).show()
    }