배너

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

이 가이드에는 Ad Manager의 배너 광고를 사용할 수 있습니다. 코드 스니펫과 지침 외에도 배너 크기 조정에 대한 정보를 얻을 수 있습니다

항상 테스트 광고로 테스트

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

테스트 광고를 로드하는 가장 쉬운 방법은 배너:

/21775744923/example/adaptive-banner

테스트 광고 단위는 모든 요청에 대해 테스트 광고를 반환하도록 구성되어 있습니다. 코딩, 테스트 및 디버깅 중에 앱에서 자유롭게 사용할 수 있습니다. 단, 있습니다.

광고 로드

다음 예에서는 배너 광고를 인스턴스화합니다.

class BannerExampleState extends State<BannerExample> {
  AdManagerBannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = '/21775744923/example/adaptive-banner';

  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = AdManagerBannerAd(
      adUnitId: adUnitId,
      request: const AdManagerAdRequest(),
      size: AdSize.banner,
      listener: AdManagerBannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('AdManagerBannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
      ),
    )..load();
  }
}

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

크기(dp(너비x높이)) 설명 AdSize 상수
320x50 표준 배너 banner
320x100 대형 배너 largeBanner
320x250 중형 직사각형 mediumRectangle
468x60 전체 크기 배너 fullBanner
728x90 리더보드 leaderboard
제공된 너비 x 조정 가능한 높이 적응형 배너 해당 사항 없음

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

final AdSize adSize = AdSize(300, 50);

AdManagerBannerAdListener를 사용하면 다음과 같은 수명 주기 이벤트를 수신 대기할 수 있습니다. 광고가 로드되었을 때처럼 말이죠 이 예에서는 각 메서드를 구현하고 메시지를 기록합니다. 추가합니다.

class BannerExampleState extends State<BannerExample> {
  AdManagerBannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = '/21775744923/example/adaptive-banner';


  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = AdManagerBannerAd(
      adUnitId: adUnitId,
      request: const AdManagerAdRequest(),
      size: AdSize.banner,
      listener: AdManagerBannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('AdManagerBannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
        // Called when an ad opens an overlay that covers the screen.
        onAdOpened: (Ad ad) {},
        // Called when an ad removes an overlay that covers the screen.
        onAdClosed: (Ad ad) {},
        // Called when an impression occurs on the ad.
        onAdImpression: (Ad ad) {},
      ),
    )..load();
  }
}

배너 광고 표시

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

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

...
if (_bannerAd != null) {
  Align(
    alignment: Alignment.bottomCenter,
    child: SafeArea(
      child: SizedBox(
        width: _bannerAd!.size.width.toDouble(),
        height: _bannerAd!.size.height.toDouble(),
        child: AdWidget(ad: _bannerAd!),
      ),
    ),
  )
}
...

더 이상 액세스할 필요가 없는 광고는 폐기해야 합니다. 권장사항 dispose() 호출 시점은 AdWidget 위젯 트리 또는 AdManagerBannerAdListener.onAdFailedToLoad()에서 있습니다.

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

Android 9 이하의 스크롤 제한

Android 9 이상을 실행하는 구형이거나 덜 강력한 기기 중 최적의 성능을 발휘할 수 있습니다 을 사용해야 합니다. 권장사항만 Android 10 이상에서 이러한 유형의 배너를 사용하는 경우 고정 게재위치 배너(예: 앵커 광고 배너는 영향을 받지 않으며 API 레벨을 제공합니다.