플러터 앱 광고 삽입 및 배포 방법
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):
- 키 저장소 생성: keytool 명령어로 .jks 파일 생성.
- 빌드 설정: android/key.properties에 키 정보 입력 후 build.gradle에서 서명 구성.
- AAB 생성: flutter build appbundle –release 실행.
- Play Console 업로드: 내부 테스트 트랙에 .aab 파일 업로드 후 프로덕션 전환.
- iOS (App Store):
- 번들 ID 등록: Apple Developer Portal에서 com.example.app 형식으로 고유 ID 생성.
- Xcode 설정: 자동 서명 활성화 및 팀 계정 연결.
- IPA 빌드: flutter build ipa –export-method app-store 실행.
- 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)
- 번들 ID 등록: Apple Developer Portal에서 앱의 고유한 Bundle ID를 등록합니다. Bundle ID는 com.example.app 형식입니다.
- Xcode 설정: Xcode에서 자동 서명(Automatically manage signing)을 활성화하고 팀 계정을 연결합니다.
- IPA 빌드: flutter build ipa –export-method app-store 명령어를 실행하여 IPA 파일을 생성합니다.
- 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 정책을 위반하는 콘텐츠(예: 유해 콘텐츠, 클릭 유도 배너)는 금지됩니다.