2025ver. 플러터로 개발 후 광고 삽입하여 배포하는 방법

플러터 앱 광고 삽입 및 배포 방법

광고 삽입

1. 광고 통합 (AdMob 기준)

  • AdMob 계정 설정: AdMob에서 Android/iOS 앱 등록 후 각 플랫폼별 App ID 획득. App ID 형식은 ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy.
  • 플랫폼 설정:
  • Android: android/app/src/main/AndroidManifest.xml에 <meta-data> 태그로 App ID 추가.
  • iOS: ios/Runner/Info.plist에 GADApplicationIdentifier 키로 App ID 설정.
  • 패키지 추가: google_mobile_ads 플러그인 설치 (flutter pub add google_mobile_ads)
  • SDK 초기화: main.dart에서 MobileAds.instance.initialize() 호출, 비동기 처리 위해 WidgetsFlutterBinding.ensureInitialized() 필수.
  • 광고 유형 구현:
    • 배너 광고: BannerAd 인스턴스 생성 후 load() 호출. AdSize로 크기 조정 가능.
final bannerAd = BannerAd(
  size: AdSize.banner,
  adUnitId: 'ca-app-pub-3940256099942544/6300978111',
  listener: BannerAdListener(),
  request: AdRequest(),
)..load();
  • 전면 광고: InterstitialAd.load()로 로드 후 ‘show()’ 실행.
  • 보상형 광고: RewardedAd.load() 사용, 사용자 상호작용 시 보상 제공.

2. 앱 배포 준비

  • Android (Google Play):
  1. 키 저장소 생성: keytool 명령어로 .jks 파일 생성.
  2. 빌드 설정: android/key.properties에 키 정보 입력 후 build.gradle에서 서명 구성.
  3. AAB 생성: flutter build appbundle –release 실행.
  4. Play Console 업로드: 내부 테스트 트랙에 .aab 파일 업로드 후 프로덕션 전환.
  • iOS (App Store):
  1. 번들 ID 등록: Apple Developer Portal에서 com.example.app 형식으로 고유 ID 생성.
  2. Xcode 설정: 자동 서명 활성화 및 팀 계정 연결.
  3. IPA 빌드: flutter build ipa –export-method app-store 실행.
  4. Transporter 업로드: .ipa 파일을 Apple에 제출 후 심사 요청.

3. 고급 전략

  • 매체 연동 (Mediation): AdMob 외 Facebook Audience, Unity Ads 등 다중 네트워크 통합 가능. mediation 패키지 활용 시 수익 극대화.
  • 테스트 광고 사용: 개발 단계에선 테스트 Ad Unit ID(ca-app-pub-3940256099942544/6300978111) 필수[1][28].
  • 규정 준수:
  • Android: 광고 ID 권한 확인.
  • iOS: Xcode에서 ATT 프레임워크 적용 및 개인정보 처리 방침 명시.

4. 대체 광고 플랫폼

  • AppLovin/Unity Ads: applovin_max 또는 unity_ads_plugin 패키지 사용.
  • IronSource: 보상형 광고 최적화 가능.

5. 주의사항

  • 키 저장소 관리: 분실 시 앱 업데이트 불가능.
  • 광고 밀도 제어: 사용자 경험 저하 방지를 위해 전면 광고 노출 빈도 제한.
  • 애드몹 정책: 유해 콘텐츠 및 클릭 유도 배너 금지.

더 자세한 설명

1. 광고 통합 (AdMob 기준)

AdMob 계정 설정

AdMob 웹사이트에서 계정을 생성하고 Android 및 iOS 앱을 등록합니다. 각 플랫폼에 맞는 App ID를 획득해야 합니다. App ID는 ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy 형태를 가집니다.

플랫폼별 설정

  • Android: android/app/src/main/AndroidManifest.xml 파일을 열고 <application> 태그 내에 <meta-data> 태그를 추가하여 AdMob App ID를 설정합니다.
<manifest>
    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>
  • iOS: ios/Runner/Info.plist 파일을 열고 GADApplicationIdentifier 키를 추가하여 AdMob App ID를 설정합니다.
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-################~##########</string>

#에는 자신이 가지고 있는 펍코드 숫자로 넣어주세요.

플러그인 추가

google_mobile_ads 플러그인을 Flutter 프로젝트에 추가합니다. 터미널에서 다음 명령어를 실행합니다.

flutter pub add google_mobile_ads

SDK 초기화

lib/main.dart 파일에서 Mobile Ads SDK를 초기화합니다. MobileAds.instance.initialize() 메서드를 호출하여 SDK를 초기화하고, 초기화가 완료될 때까지 기다립니다.

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();
  runApp(MyApp());
}

광고 유형 구현

  • 배너 광고: BannerAd 인스턴스를 생성하고 load() 메서드를 호출하여 배너 광고를 로드합니다. AdSize를 사용하여 배너 광고의 크기를 조정할 수 있습니다.
final bannerAd = BannerAd(
  size: AdSize.banner,
  adUnitId: 'ca-app-pub-3940256099942544/6300978111', // 테스트 광고 단위 ID
  listener: BannerAdListener(),
  request: AdRequest(),
)..load();
  • 전면 광고: InterstitialAd.load()를 호출하여 전면 광고를 로드하고, show() 메서드를 호출하여 광고를 표시합니다.
  • 보상형 광고: RewardedAd.load()를 사용하여 로드하고, 사용자 상호 작용에 대한 보상을 제공합니다.

2. 앱 배포 준비

Android (Google Play)

1. 키 저장소 생성: keytool 명령어를 사용하여 앱 서명에 필요한 .jks 키 저장소 파일을 생성합니다.

    keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

    2. 빌드 설정: android/key.properties 파일을 생성하고 키 저장소 정보를 입력합니다.

      storePassword=your_store_password
      keyPassword=your_key_password
      keyAlias=key
      storeFile=../key.jks

      ‘android/app/build.gradle’파일에서 서명 구성을 추가합니다.

      android {
          ...
          signingConfigs {
              release {
                  storeFile file("key.jks")
                  storePassword "your_store_password"
                  keyAlias "key"
                  keyPassword "your_key_password"
              }
          }
          buildTypes {
              release {
                  signingConfig signingConfigs.release
              }
          }
      }

      3. AAB 생성: flutter build appbundle –release 명령어를 실행하여 Android App Bundle(.aab) 파일을 생성합니다.

      4. Play Console 업로드: Google Play Console에 접속하여 내부 테스트 트랙에 .aab 파일을 업로드하고, 앱을 프로덕션으로 전환합니다.

        iOS (App Store)

        1. 번들 ID 등록: Apple Developer Portal에서 앱의 고유한 Bundle ID를 등록합니다. Bundle ID는 com.example.app 형식입니다.
        2. Xcode 설정: Xcode에서 자동 서명(Automatically manage signing)을 활성화하고 팀 계정을 연결합니다.
        3. IPA 빌드: flutter build ipa –export-method app-store 명령어를 실행하여 IPA 파일을 생성합니다.
        4. Transporter 업로드: Apple Transporter 앱을 사용하여 .ipa 파일을 Apple에 제출하고 앱 심사를 요청합니다.

        3. 고급 전략

        매체 연동 (Mediation)

        AdMob 외에 Facebook Audience Network, Unity Ads 등 여러 광고 네트워크를 통합하여 광고 수익을 극대화할 수 있습니다. mediation 패키지를 사용하면 여러 광고 소스를 관리하고 최적화할 수 있습니다.

        테스트 광고 사용

        개발 단계에서는 실제 광고 대신 AdMob에서 제공하는 테스트 광고 단위 ID(ca-app-pub-3940256099942544/6300978111)를 사용해야 합니다.

        규정 준수

        • Android: AndroidManifest.xml 파일에서 광고 ID 권한을 확인합니다.
        • iOS: Xcode에서 ATT(App Tracking Transparency) 프레임워크를 구현하고 개인 정보 처리 방침을 명확하게 명시해야 합니다.

        4. 대체 광고 플랫폼

        • AppLovin/Unity Ads: applovin_max 또는 unity_ads_plugin 패키지를 사용하여 AppLovin 또는 Unity Ads를 통합할 수 있습니다.
        • IronSource: 보상형 광고에 최적화된 IronSource 플랫폼을 고려할 수 있습니다.

        5. 주의사항

        • 키 저장소 관리: 키 저장소를 분실하면 앱 업데이트가 불가능하므로 안전하게 보관해야 합니다.
        • 광고 밀도 제어: 사용자 경험을 저해하지 않도록 전면 광고의 노출 빈도를 적절하게 조절해야 합니다.
        • AdMob 정책 준수: AdMob 정책을 위반하는 콘텐츠(예: 유해 콘텐츠, 클릭 유도 배너)는 금지됩니다.

        Read more