배너 광고는 기기 화면의 상단이나 하단에서 앱의 레이아웃 안에 게재됩니다. 사용자가 앱과 상호작용하는 동안 화면에 계속 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다
이 가이드에서는 AdMob의 배너 광고를 Flutter 앱에 통합하는 방법을 설명합니다. 코드 스니펫과 안내 외에도 올바른 배너 크기 조정에 대한 정보도 포함되어 있습니다.
항상 테스트 광고로 테스트
앱을 빌드하고 테스트할 때는 운영 중인 실제 광고 대신 테스트 광고를 사용하세요. 이렇게 하지 않으면 계정이 정지될 수 있습니다.
테스트 광고를 로드하는 가장 쉬운 방법은 배너 광고 전용 테스트 광고 단위 ID를 사용하는 것입니다.
Android
ca-app-pub-3940256099942544/6300978111
iOS
ca-app-pub-3940256099942544/2934735716
테스트 광고 단위는 모든 요청에 대해 테스트 광고를 반환하도록 구성되어 있습니다. 코딩, 테스트 및 디버깅 중에 앱에서 자유롭게 사용할 수 있습니다. 단, 앱을 게시하기 전에 이 테스트 광고 단위 ID를 자체 광고 단위 ID로 바꿔야 합니다.
광고 로드
다음 예에서는 배너 광고를 인스턴스화합니다.
class BannerExampleState extends State<BannerExample> { BannerAd? _bannerAd; bool _isLoaded = false; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/6300978111' : 'ca-app-pub-3940256099942544/2934735716'; /// Loads a banner ad. void loadAd() { _bannerAd = BannerAd( adUnitId: adUnitId, request: const AdRequest(), size: AdSize.banner, listener: BannerAdListener( // 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('BannerAd 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);
배너 광고 이벤트
BannerAdListener
를 사용하면 다음과 같은 수명 주기 이벤트를 수신 대기할 수 있습니다.
광고가 로드되었을 때처럼 말이죠 이 예에서는 각 메서드를 구현하고 메시지를 기록합니다.
추가합니다.
class BannerExampleState extends State<BannerExample> { BannerAd? _bannerAd; bool _isLoaded = false; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/6300978111' : 'ca-app-pub-3940256099942544/2934735716'; /// Loads a banner ad. void loadAd() { _bannerAd = BannerAd( adUnitId: adUnitId, request: const AdRequest(), size: AdSize.banner, listener: BannerAdListener( // 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('BannerAd 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(); } }
배너 광고 표시
BannerAd
를 위젯으로 표시하려면 AdWidget
를 인스턴스화해야 합니다.
load()
를 호출한 후 지원되는 광고와 함께 표시됩니다. load()
를 호출하기 전에 위젯을 만들 수 있지만 위젯 트리에 위젯을 추가하기 전에 load()
를 호출해야 합니다.
AdWidget
은 Flutter의 위젯 클래스에서 상속되며 다른 위젯처럼 사용할 수 있습니다. iOS에서는 지정된 속성이 있는 위젯에 위젯을 배치해야 합니다.
지정할 수 있습니다. 그렇지 않으면 광고가 게재되지 않을 수 있습니다. BannerAd
는 광고와 일치하는 크기의 컨테이너에 배치될 수 있습니다.
... 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
위젯 트리 또는 BannerAdListener.onAdFailedToLoad()
에서
있습니다.
작업이 끝났습니다. 이제 앱에서 배너 광고를 게재할 수 있습니다.
Android 9 이하의 스크롤 제한
Android 9 이상을 실행하는 구형이거나 덜 강력한 기기 중 최적의 성능을 발휘할 수 있습니다 을 사용해야 합니다. 권장사항만 Android 10 이상에서 이러한 유형의 배너를 사용하는 경우 고정 게재위치 배너(예: 앵커 광고 배너는 영향을 받지 않으며 API 레벨을 제공합니다.