Android에서 배너 광고 구현

참고: Unity Ads를 초기화한 후 배너 광고를 표시해야 합니다.

배너 광고를 사용하려면 특정 유형의 배너 전용 광고 유닛이 필요합니다.

다른 뷰와 마찬가지로 배너 뷰 오브젝트를 뷰 계층 구조에 배치할 수 있습니다. 그러면 각 배너 인스턴스의 위치를 커스터마이즈하거나 여러 배너를 표시할 수 있습니다.

참고: app-ads.txt는 광고 생태계의 부정 행위를 근절하고 투명성을 구축하기 위한 IAB 이니셔티브입니다. 설명된 대로 app-ads.txt를 구현해야 합니다. 그렇지 않으면 배너 수요가 크게 줄어듭니다.

스크립트 구현

다음 스크립트 샘플은 화면에 두 개의 배너 광고와 이를 테스트하기 위한 버튼을 표시하는 구현 예제입니다.

이 예제에서는 여러 배너 뷰 오브젝트에 단일 리스너를 사용합니다. 배너 뷰 오브젝트별로 다른 리스너를 사용할 수도 있습니다.

[!include]

MREC 배너 포맷 구현

앱에 MREC(중간 직사각형) 크기의 광고 포맷을 표시하려면 300x250, 300x300, 450x450과 같이 적절한 크기를 사용해야 합니다. 특히 300x250 MREC 배너 광고의 경우 다음 예제 코드에서 아래 값을 변경합니다.

new UnityBannerSize(320, 50)

조정된 크기는 다음과 같습니다.

new UnityBannerSize(300, 250)

샘플 코드

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

import com.unity3d.ads.IUnityAdsInitializationListener;
import com.unity3d.ads.UnityAds;
import com.unity3d.services.banners.BannerErrorInfo;
import com.unity3d.services.banners.BannerView;
import com.unity3d.services.banners.UnityBannerSize;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

public class ShowBanners extends AppCompatActivity implements IUnityAdsInitializationListener {

  String unityGameID = "1234567";
  Boolean testMode = true;
  String topAdUnitId = "topBanner";
  String bottomAdUnitId = "bottomBanner";

  // Listener for banner events:
  private BannerView.IListener bannerListener = new BannerView.IListener() {
     @Override
     public void onBannerLoaded(BannerView bannerAdView) {
        // Called when the banner is loaded.
        Log.v("UnityAdsExample", "onBannerLoaded: " + bannerAdView.getPlacementId());
        // Enable the correct button to hide the ad
        (bannerAdView.getPlacementId().equals("topBanner") ? hideTopBannerButton : hideBottomBannerButton).setEnabled(true);
     }

     @Override
     public void onBannerFailedToLoad(BannerView bannerAdView, BannerErrorInfo errorInfo) {
        Log.e("UnityAdsExample", "Unity Ads failed to load banner for " + bannerAdView.getPlacementId() + " with error: [" + errorInfo.errorCode + "] " + errorInfo.errorMessage);
        // Note that the BannerErrorInfo object can indicate a no fill (refer to the API documentation).
     }

     @Override
     public void onBannerClick(BannerView bannerAdView) {
        // Called when a banner is clicked.
        Log.v("UnityAdsExample", "onBannerClick: " + bannerAdView.getPlacementId());
     }

     @Override
     public void onBannerLeftApplication(BannerView bannerAdView) {
        // Called when the banner links out of the application.
        Log.v("UnityAdsExample", "onBannerLeftApplication: " + bannerAdView.getPlacementId());
     }
  };

  // This banner view object will be placed at the top of the screen:
  BannerView topBanner;
  // This banner view object will be placed at the bottom of the screen:
  BannerView bottomBanner;
  // View objects to display banners:
  RelativeLayout topBannerView;
  RelativeLayout bottomBannerView;
  // Buttons to show the banners:
  Button showTopBannerButton;
  Button showBottomBannerButton;
  // Buttons to destroy the banners:
  Button hideTopBannerButton;
  Button hideBottomBannerButton;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     // Initialize Unity Ads:
     UnityAds.initialize(getApplicationContext(), unityGameID, testMode, this);

     // Set up a button to load the top banner when clicked:
     showTopBannerButton = findViewById(R.id.loadTopBanner);
     // Set up a button to load the bottom banner when clicked:
     showBottomBannerButton = findViewById(R.id.loadBottomBanner);
     // Set up a button to destroy the top banner when clicked:
     hideTopBannerButton = findViewById(R.id.hideTopBanner);
     // Set up a button to destroy the bottom banner when clicked:
     hideBottomBannerButton = findViewById(R.id.hideBottomBanner);

     showTopBannerButton.setEnabled(false);
     showBottomBannerButton.setEnabled(false);
     hideTopBannerButton.setEnabled(false);
     hideBottomBannerButton.setEnabled(false);

     showTopBannerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           showTopBannerButton.setEnabled(false);
           // Create the top banner view object:
           topBanner = new BannerView(view.getContext(), topAdUnitId, new UnityBannerSize(320, 50));
           // Set the listener for banner lifecycle events:
           topBanner.setListener(bannerListener);
           topBannerView = findViewById(R.id.topBanner);
           LoadBannerAd(topBanner, topBannerView);
        }
     });

     showBottomBannerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           showBottomBannerButton.setEnabled(false);
           // Create the bottom banner view object:
           bottomBanner = new BannerView(view.getContext(), bottomAdUnitId, new UnityBannerSize(320, 50));
           // Set the listener for banner lifecycle events:
           bottomBanner.setListener(bannerListener);
           bottomBannerView = findViewById(R.id.bottomBanner);
           LoadBannerAd(bottomBanner, bottomBannerView);
        }
     });

     hideTopBannerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           // Remove content from the banner view:
           topBannerView.removeAllViews();
           // Remove the banner variables:
           topBannerView = null;
           topBanner = null;
           showTopBannerButton.setEnabled(true);
        }
     });

     hideBottomBannerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           // Remove content from the banner view:
           bottomBannerView.removeAllViews();
           // Remove the banner variables:
           bottomBannerView = null;
           bottomBanner = null;
           showBottomBannerButton.setEnabled(true);
        }
     });
  }

  public void LoadBannerAd(BannerView bannerView, RelativeLayout bannerLayout) {
     // Request a banner ad:
     bannerView.load();
     // Associate the banner view object with the banner view:
     bannerLayout.addView(bannerView);
  }

  @Override
  public void onInitializationComplete() {
     // Enable the show ad buttons because ads can now be loaded
     showTopBannerButton.setEnabled(true);
     showBottomBannerButton.setEnabled(true);
  }

  @Override
  public void onInitializationFailed(UnityAds.UnityAdsInitializationError error, String message) {

  }
}

다음 단계: 수익화 전략 가이드를 검토하고 구현 내용을 테스트하십시오.