배너 광고

배너 광고는 기기 화면의 상단이나 하단에서 앱의 레이아웃 안에 게재됩니다. 배너 광고는 사용자가 앱과 상호작용하는 동안 화면에 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다.

이 가이드에서는 AdMob의 배너 광고를 Flutter 앱에 통합하는 방법을 설명합니다. 코드 스니펫과 안내 외에 올바른 배너 크기 조정에 대한 정보도 포함되어 있습니다.

항상 테스트 광고로 테스트

앱을 제작하고 테스트할 때 운영 중인 실제 광고가 아닌 테스트 광고를 사용하세요. 이렇게 하지 않으면 계정이 정지될 수 있습니다.

테스트 광고를 로드하는 가장 쉬운 방법은 배너 광고 전용 테스트 광고 단위 ID를 사용하는 것입니다.

테스트 광고 단위는 모든 요청에 대해 테스트 광고를 반환하도록 구성되며 코딩, 테스트, 디버깅 중에 앱에서 자유롭게 사용할 수 있습니다. 단, 앱을 게시하기 전에 이 테스트 광고 단위 ID를 자체 광고 단위 ID로 바꿔야 합니다.

광고 인스턴스화

BannerAd에는 adUnitId, AdSize, AdRequest, BannerAdListener가 필요합니다. 다음 예에서는 배너 광고를 인스턴스화합니다.

final BannerAd myBanner = BannerAd(
  adUnitId: '<ad unit ID>',
  size: AdSize.banner,
  request: AdRequest(),
  listener: BannerAdListener(),
);

아래의 표에는 표준 배너 크기가 나와 있습니다.

크기(폭x높이) 설명 AdSize 상수
320x50 표준 배너 banner
320x100 대형 배너 largeBanner
320x250 중간 직사각형 mediumRectangle
468x60 전체 크기 배너 fullBanner
728x90 리더보드 leaderboard
화면 폭x32|50|90 스마트 배너 getSmartBanner(Orientation) 사용

맞춤 배너 크기를 지정하려면 원하는 AdSize를 설정합니다.

final AdSize adSize = AdSize(300, 50);

BannerAdListener를 사용하면 광고 로드와 같은 수명 주기 이벤트를 수신할 수 있습니다. 이 예에서는 각 메서드를 구현하고 콘솔에 메시지를 기록합니다.

final BannerAdListener listener = BannerAdListener(
 // Called when an ad is successfully received.
 onAdLoaded: (Ad ad) => print('Ad loaded.'),
 // Called when an ad request failed.
 onAdFailedToLoad: (Ad ad, LoadAdError error) {
   // Dispose the ad here to free resources.
   ad.dispose();
   print('Ad failed to load: $error');
 },
 // Called when an ad opens an overlay that covers the screen.
 onAdOpened: (Ad ad) => print('Ad opened.'),
 // Called when an ad removes an overlay that covers the screen.
 onAdClosed: (Ad ad) => print('Ad closed.'),
 // Called when an impression occurs on the ad.
 onAdImpression: (Ad ad) => print('Ad impression.'),
);

광고 로드

BannerAd의 인스턴스화가 끝나면 load()를 호출해야 화면에 표시됩니다.

myBanner.load();

디스플레이 광고

BannerAd를 위젯으로 표시하려면 load()를 호출한 후 지원되는 광고를 사용하여 AdWidget을 인스턴스화해야 합니다. load()를 호출하기 전에 위젯을 만들 수 있지만 위젯 트리에 위젯을 추가하기 전에 load()를 호출해야 합니다.

final AdWidget adWidget = AdWidget(ad: myBanner);

AdWidget은 Flutter의 위젯 클래스에서 상속되며 다른 위젯처럼 사용할 수 있습니다. iOS에서는 지정된 너비와 높이를 바탕으로 위젯에 위젯을 배치해야 합니다. 그렇지 않으면 광고가 게재되지 않을 수 있습니다. BannerAd는 광고와 일치하는 크기의 컨테이너에 배치할 수 있습니다.

final Container adContainer = Container(
  alignment: Alignment.center,
  child: adWidget,
  width: myBanner.size.width.toDouble(),
  height: myBanner.size.height.toDouble(),
);

광고에서 load()를 호출한 후 액세스할 필요가 없어지면 dispose()를 호출해야 합니다. dispose()를 호출하기 가장 좋은 시점은 위젯 트리나 AdListener.onAdFailedToLoad 콜백에서 AdWidget을 제거한 후입니다.

준비가 끝났습니다. 이제 앱에서 배너 광고를 게재할 수 있습니다.