Flutter에서 광고를 추가하려면, 주로 Google의 모바일 광고 SDK인 Google Mobile Ads SDK를 사용합니다. 이를 통해 배너 광고, 전면 광고, 보상형 광고 등 다양한 형식의 광고를 앱에 통합할 수 있습니다. 다음은 Flutter 앱에 광고를 추가하는 기본적인 단계입니다:
pubspec.yaml 파일에 Google Mobile Ads Flutter 플러그인을 의존성으로 추가합니다.
yamlCopy code
dependencies:
flutter:
sdk: flutter
google_mobile_ads: ^latest_version
**latest_version**은 사용하고 싶은 google_mobile_ads 패키지의 최신 버전으로 대체해야 합니다. 패키지의 최신 버전은 pub.dev에서 확인할 수 있습니다.
Android: android/app/src/main/AndroidManifest.xml 파일에 광고를 위한 메타 데이터와 권한을 추가합니다.
xmlCopy code
<manifest>
<application>
<!-- AdMob 앱 ID를 메타데이터로 추가 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-################~##########"/>
</application>
</manifest>
iOS: ios/Runner/Info.plist 파일에 광고를 위한 메타 데이터를 추가합니다.
xmlCopy code
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-################~##########</string>
그리고 **ios/Podfile**을 열어 iOS 플랫폼을 최소 9.0 이상으로 설정해야 합니다.
앱이 시작될 때 MobileAds.instance.initialize() 메소드를 호출하여 Google Mobile Ads SDK를 초기화합니다. 이는 보통 main.dart 파일의 main() 함수에서 수행됩니다.
dartCopy code
void main() {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize();
runApp(MyApp());
}
이제 광고 유닛을 생성하고 광고를 로드한 후, 앱의 UI에 표시할 수 있습니다. 예를 들어, 배너 광고를 표시하는 방법은 다음과 같습니다:
dartCopy code
import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BannerAdExample(),
);
}
}
class BannerAdExample extends StatefulWidget {
@override
_BannerAdExampleState createState() => _BannerAdExampleState();
}
class _BannerAdExampleState extends State<BannerAdExample> {
late BannerAd _bannerAd;
bool _isBannerAdReady = false;
@override
void initState() {
super.initState();
_bannerAd = BannerAd(
adUnitId: 'ca-app-pub-3940256099942544/6300978111', // 테스트 광고 ID
size: AdSize.banner,
request: AdRequest(),
listener: BannerAdListener(
onAdLoaded: (_) {
setState(() {
_isBannerAdReady = true;
});
},
onAdFailedToLoad: (ad, err) {
print('Failed to load a banner ad: ${err.message}');
_isBannerAdReady = false;
ad.dispose();
},
),
);
_bannerAd.load();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Banner Ad Example'),
),
body: Center(
child: _isBannerAdReady
? Container(
width: _bannerAd.size.width.toDouble(),
height: _bannerAd.size.height.toDouble(),
child: AdWidget(ad: _bannerAd),
)
: Text('Loading banner ad...'),
),
);
}
@override
void dispose() {
_bannerAd.dispose();
super.dispose();
}
}
이 예제에서는 배너 광고를 로드하고, 준비되면 화면에 표시합니다. 실제 앱에 배포할 때는 **adUnitId**를 귀하의 실제 광고 단위 ID로 교체해야 합니다.
Google Mobile Ads SDK를 사용하면 다양한 유형의 광고를 쉽게 통합하고 관리할 수 있습니다. Flutter 앱에 광고를 추가할 때는 사용자 경험을 방해하지 않는 방식으로 광고를 배치하는 것이 중요합니다.