배너

circle-info

배너 광고는 앱 화면의 특정 영역에 표시되는 직사각형 광고입니다. 사용자가 앱을 사용하는 동안 지속적으로 노출되어 높은 노출 빈도를 제공합니다.

1. 주요특징

  • 다양한 사이즈 지원 (320x50, 320x100, 300x250, 250x250, ADAPTIVE_ANCHOR)

  • 자동 로드 및 새로고침 기능

  • 간단한 컴포넌트 기반 구현

  • 이벤트 기반 콜백으로 광고 상태 추적

2. 기본 구현 샘플코드

배너 광고는 AdWhaleAdViewAdWhaleAdWidget 을 사용하여 구현합니다.

import 'package:flutter/material.dart';
import 'package:adwhale_sdk_flutter/adwhale_sdk_flutter.dart';

class BannerAdExample extends StatefulWidget {
  const BannerAdExample({super.key});

  @override
  State<BannerAdExample> createState() => _BannerAdExampleState();
}

class _BannerAdExampleState extends State<BannerAdExample> {
  AdWhaleAdView? _bannerAd;

  @override
  void initState() {
    super.initState();
    _loadBanner();
  }

  void _loadBanner() {
    _bannerAd = AdWhaleAdView(
      listener: AdWhaleAdViewListener(
        onLoaded: (ad) {
          print('배너 광고 로드 성공');
          setState(() {});
        },
        onLoadFailed: (ad, errorCode, errorMessage) {
          print('배너 광고 로드 실패: $errorCode, $errorMessage');
          ad.destroy();
          setState(() {
            _bannerAd = null;
          });
        },
        onClicked: (ad) {
          print('배너 광고 클릭됨');
        },
      ),
      adInfo: AdInfo(
        androidPlacementUid: 'ADwhale 안드로이드 배너 placement uid', 
        iosBannerAdUnitId: 'Admob 배너 unit id', 
        bannerHeight: AdWhaleAdSize.BANNER_320x50),
      )..loadAd();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Expanded(
            child: Center(
              child: Text('앱 콘텐츠'),
            ),
          ),
          // 배너 광고 영역
          if (_bannerAd != null)
            SizedBox(
              height: 50,
              child: AdWhaleAdWidget(ad: _bannerAd!),
            ),
        ],
      ),
    );
  }

  @override
  void dispose() {
    _bannerAd?.destroy();
    super.dispose();
  }
}

3. 배너 사이즈

배너 광고는 다음 사이즈를 지원합니다:

사이즈
설명

320x50

AdWhaleAdSize.BANNER_320x50

표준 배너 (Banner)

320x100

AdWhaleAdSize.BANNER_320x100

큰 배너 (Large Banner)

300x250

AdWhaleAdSize.BANNER_300x250

중간 직사각형 (Medium Rectangle)

250x250

AdWhaleAdSize.BANNER_250x250

정사각형 (Square)

ADAPTIVE_ANCHOR

AdWhaleAdSize.ADAPTIVE_ANCHOR

적응형 앵커 배너

AdInfo (배너 타게팅)

  • Android만 사용하는 경우

  • iOS만 사용하는 경우

  • Android + iOS

사용예시

4. 이벤트 리스너 설정

AdWhaleAdView 컴포넌트는 다음 이벤트를 지원합니다:

이벤트
설명
파라미터

onLoaded

광고 로드 성공 시 호출

Ad ad

onLoadFailed

광고 로드 실패 시 호출

Ad ad, String errorCode, String errorMessage

onClicked

광고 클릭 시 호출

Ad ad

5. 옵션 설정

AdWhaleAdView 컴포넌트 호출 시 추가 옵션을 설정할 수 있습니다.

6. 배너 광고 샘플코드

다음은 Flutter 위젯에서 배너 광고를 구현하는 완전한 예시입니다.

7. 주의사항

광고 로드 타이밍

  • loadAd() 메서드를 호출해야 광고가 로드됩니다.

  • SDK 초기화가 완료된 후에 광고를 로드하는 것을 권장합니다.

위젯 재생성

  • 배너 사이즈나 placement UID를 변경할 때는 AdWhaleAdViewdestroy하고 새로 생성해야 합니다.

  • setState() 를 호출하여 UI를 갱신하세요.

  • 너비는 보통 double.infinity로 설정하여 화면 전체를 사용합니다.

에러 처리

  • onAdLoadFailed 이벤트에서 적절한 에러 처리를 구현하세요.

  • 에러 코드와 메시지를 로깅하여 문제를 추적할 수 있습니다.

  • 실패한 광고는 destroy() 를 호출하여 정리하세요.

성능 최적화

  • 배너 광고는 자동으로 새로고침되므로, 불필요한 리렌더링을 방지하세요.

테스트

  • 개발 환경에서는 테스트용 placement UID를 사용하세요.

Last updated