Flutter_끄적끄적

[Flutter]플러터 애드몹 적용하기 |안드로이드, IOS

Ksr 2021. 11. 29. 22:51
반응형
  • 사용 패키지
    import 'package:google_mobile_ads/google_mobile_ads.dart';
    
    google_mobile_ads: ^0.12.0
  • 설정하기 (android-> app-> build.gradle)
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    
    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.ksr.today_visting_list"
        minSdkVersion 19 //구글 애드몹 사용을 위해 Sdk 버전을 19로 올려야함(수정)
        multiDexEnabled true //Sdk 버전 Dex를 Enable 해줘야함 (추가)
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }
  • 설정하기 (android-> app-> src-> main-> AndroidManifest.xml 추가)
      <meta-data
          android:name="com.google.android.gms.ads.APPLICATION_ID"
          android:value="ca-app-pub-************~*************"/>
    </application>
     android value 값은 애드몹에서 받은 기기ID 입력(***~***)

  • 코드 애드몹 초기화 (main.dart)
    Future<void> main() async {
      //애드몹 바인딩 초기화
      WidgetsFlutterBinding.ensureInitialized();
      //기존 애드몹 초기화
      MobileAds.instance.initialize();
      bool data = await fetchData();
      runApp(MyApp(
        firstCheck: data,
      ));
    }
    
    class MyApp extends StatelessWidget {
      final bool firstCheck;
      ....


  • 코드 (초기 선언)
    final String androidTestUnitId = BannerAd.testAdUnitId;//테스트용 광고ID
    BannerAd? _bannerAd;
    
    @override
      void initState() {
        // TODO: implement initState
        super.initState();
        _bannerAd = BannerAd(
            size: AdSize.banner, //배너 크기
            adUnitId: androidTestUnitId, //테스트용 광고ID
            listener: AdListener(),
            request: AdRequest())..load();
      }
      @override
      void dispose() {
        // TODO: implement dispose
        _bannerAd!.dispose();
  • 코드 (사용)
    @override
      Widget build(BuildContext context) {
        return Column(
          children: [
            Expanded(
              child: Container(
                  width: double.infinity,
                  color: Color(0xff161616),
                  //위에서 초기 설정한 _bannerAd가 null 이면 일반 Container
                  child: this._bannerAd == null
                      ? Container(color: Color(0xff161616),)
                      : AdWidget(
                    ad: this._bannerAd!,
                  )),
            ),
          ],
        );
      }
    }


  • 주의
    _bannerAd를 사용 하고 사용하지 않을 때 반드시 dispose 해줘야함
반응형