이 가이드는 Firebase를 사용하지 않고 AdMob으로 C++ 앱에서 수익을 창출하려는 게시자를 대상으로 합니다. 앱에 Firebase를 포함할 계획이거나 이를 고려 중이면 본 가이드의 Firebase와 함께 AdMob 이용하기 버전을 참고하세요.
Google 모바일 광고 C++ SDK를 앱에 통합하는 것은 광고를 표시하고 수익을 창출하는 첫 번째 단계입니다. SDK를 통합하면 전면 광고나 보상형 광고와 같은 광고 형식을 선택하고 단계에 따라 구현할 수 있습니다.
Google 모바일 광고 C++ SDK는 Google 모바일 광고 iOS 및 Android SDK를 래핑하며 이러한 플랫폼에서만 사용할 수 있습니다. Google 모바일 광고 C++ SDK는 Firebase C++ 구성을 사용하여 비동기 작업을 지원하므로 firebase::gma
네임스페이스에 있습니다.
이 가이드를 처음으로 진행하는 경우 우선 Google 모바일 광고 C++ 테스트 앱을 다운로드하여 따라 해 보는 것이 좋습니다.
기본 요건
Android
- Android 스튜디오 3.2 이상 사용
- 앱의 빌드 파일이 다음 값을 사용하는지 확인합니다.
minSdkVersion
16 이상compileSdkVersion
28 이상
iOS
- Xcode 13 이상 사용
- iOS 10.0 이상 타겟팅
AdMob 계정에서 앱 설정
다음 단계에 따라 앱을 AdMob 앱으로 등록하세요.
AdMob에 앱을 등록합니다. 이 단계에서는 고유한 AdMob 앱 ID로 AdMob 앱을 만들며 이 ID는 이 가이드의 뒷부분에서 필요합니다.
Google 모바일 광고 C++ SDK 설치
Google 모바일 광고 C++ SDK는 firebase::gma
네임스페이스에 있으므로 Firebase C++ SDK를 다운로드한 후 원하는 디렉터리에 압축을 풉니다.
Firebase C++ SDK는 플랫폼별로 제공되지 않지만 플랫폼별 라이브러리 구성이 필요합니다.
Android
CMake를 사용하는 것이 좋지만 libfirebase_app.a
및 libfirebase_gma.a
를 앱에 연결하는 일반적인 Firebase C++ SDK 시작 가이드에서 ndk-build 안내를 확인할 수 있습니다.
프로젝트의
gradle.properties
파일에서 압축을 푼 SDK의 위치를 지정합니다.systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
프로젝트의
settings.gradle
파일에 다음 콘텐츠를 추가합니다.def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir"
모듈(앱 수준) Gradle 파일(일반적으로
app/build.gradle
)에 다음 콘텐츠를 추가합니다. 여기에는 Google 모바일 광고 C++ SDK의 라이브러리 종속 항목이 포함됩니다.android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependency for the Google Mobile Ads C++ SDK apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { gma }
프로젝트의
CMakeLists.txt
파일에 다음 콘텐츠를 추가합니다.# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # Add the Google Mobile Ads C++ SDK. # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. set(firebase_libs firebase_gma firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")
앱을 동기화하여 모든 종속 항목에 필요한 버전이 있는지 확인합니다.
iOS
이 섹션의 단계는 Google 모바일 광고 C++ SDK를 iOS 프로젝트에 추가하는 방법의 예입니다.
다음을 실행하여 CocoaPods 버전 1 이상을 가져옵니다.
sudo gem install cocoapods --pre
압축을 푼 SDK에서 Google 모바일 광고 포드를 추가합니다.
Podfile이 없으면 만듭니다.
cd APP_DIRECTORY
pod init
Podfile에 Google 모바일 광고 C++ SDK용 포드를 추가합니다.
pod 'Google-Mobile-Ads-SDK'
포드를 설치하고 Xcode에서
.xcworkspace
파일을 엽니다.pod install
open APP.xcworkspace
Firebase C++ SDK의 다음 프레임워크를 프로젝트에 추가합니다.
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
완료되었습니다 C++ 앱은 다른 Firebase 서비스 없이 Google 모바일 광고 C++ SDK를 사용하도록 구성되었습니다.
앱의 AdMob 앱 ID 구성
Android
모바일 광고 SDK Android 가이드에 설명된 대로 앱 구성의 3단계를 따른 다음 이 페이지로 돌아옵니다.
iOS
모바일 광고 SDK iOS 가이드에 설명된 대로 Info.plist 업데이트 단계를 따른 다음 이 페이지로 돌아옵니다.
Google 모바일 광고 SDK 초기화
광고를 로드하기 전에 SDK를 초기화하고 초기화가 완료된 후 (또는 30초의 제한 시간이 경과한 후에) firebase::Future
를 완료하는 firebase::gma::Initialize()
를 호출하여 앱에서 Google 모바일 광고 C++ SDK를 초기화하도록 합니다. 이 작업은 앱 실행 시 한 번만 처리하면 됩니다.
Initialize()
를 호출할 때 Google 모바일 광고 C++ SDK 또는 미디에이션 파트너 SDK에서
광고를 미리 로드할 수 있습니다. 유럽 경제 지역 (EEA) 사용자의 동의를 얻고 싶은 경우 요청별 플래그 (예: tag_for_child_directed_treatment
또는 tag_for_under_age_of_consent
)를 설정하거나 광고를 로드하기 전에 조치를 취하세요. Google 모바일 광고 C++ SDK를 초기화하기 전에 firebase::gma::SetRequestConfiguration()
를 호출하면 됩니다. 자세한 내용은 타겟팅 가이드를 참고하세요.
다음은 Initialize()
를 호출하는 방법의 예입니다.
Android
// Initialize the Google Mobile Ads library
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(jni_env, j_activity, &result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
iOS
// Initialize the Google Mobile Ads library.
firebase::InitResult result;
Future<AdapterInitializationStatus> future =
firebase::gma::Initialize(&result);
if (result != kInitResultSuccess) {
// Initialization immediately failed, most likely due to a missing
// dependency. Check the device logs for more information.
return;
}
// Monitor the status of the future.
// See "Use a Future to monitor the completion status of a method call" below.
if (future.status() == firebase::kFutureStatusComplete &&
future.error() == firebase::gma::kAdErrorCodeNone) {
// Initialization completed.
} else {
// Initialization on-going, or an error has occurred.
}
Future
를 사용하여 메서드 호출의 완료 상태 모니터링
Future
를 사용하면 비동기 메서드 호출의 완료 상태를 확인할 수 있습니다.
예를 들어 앱에서 firebase::gma::Initialize()
를 호출하면 새 firebase::Future
가 생성되고 반환됩니다. 그러면 앱은 Future
의 status()
를 폴링하여 초기화가 완료된 시점을 파악할 수 있습니다.
완료되면 앱에서 result()
를 호출하여 결과 AdapterInitializationStatus
를 가져올 수 있습니다.
Future
를 반환하는 메서드에는 상응하는 '최종 결과' 메서드가 있으며, 앱에서는 이 메서드로 특정 작업의 가장 최근 Future
를 가져올 수 있습니다. 예를 들어 firebase::gma::Initialize()
에는 firebase::gma::InitializeLastResult()
라는 상응하는 메서드가 있습니다. 이 메서드는 앱이 firebase::gma::Initialize()
의 마지막 호출 상태를 확인하는 데 사용할 수 있는 Future
를 반환합니다.
Future
상태가 완료되고 오류 코드가 firebase::gma::kAdErrorCodeNone
이면 작업이 성공적으로 완료된 것입니다.
Future
가 완료될 때 호출될 콜백을 등록할 수도 있습니다. 때에 따라 콜백이 다른 스레드에서 실행되므로 코드가 스레드로부터 안전한지 확인해야 합니다. 이 코드 스니펫은 콜백에 함수 포인터를 사용합니다.
// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
/*user_data=*/nullptr);
// The OnCompletion callback function.
static void OnCompletionCallback(
const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
// Called when the Future is completed for the last call to firebase::gma::Initialize().
// If the error code is firebase::gma::kAdErrorCodeNone,
// then the SDK has been successfully initialized.
if (future.error() == firebase::gma::kAdErrorCodeNone) {
// success!
} else {
// failure.
}
}
광고 형식 선택
이제 Google 모바일 광고 C++ SDK를 가져와서 광고를 구현할 수 있습니다. AdMob에서는 다양한 광고 형식을 제공하므로 앱의 사용자 경험에 가장 적합한 형식을 선택할 수 있습니다.
배너
기기 화면의 상단이나 하단에 표시되는 직사각형 광고입니다. 배너 광고는 사용자가 앱과 상호작용하는 동안 화면에 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다. 모바일 광고를 처음 시작하는 경우 이 형식부터 이용해 보시기 바랍니다.
전면 광고
사용자가 닫을 때까지 앱의 인터페이스를 완전히 덮는 전체 화면 광고입니다. 게임 레벨이 바뀌는 사이 또는 작업 완료 직후와 같이 앱 이용이 잠시 중단될 때 자연스럽게 광고가 게재되는 것이 가장 좋습니다.
리워드 제공됨
짧은 동영상을 시청하거나 플레이어블 광고 및 설문조사와 상호작용한 사용자에게 보상을 제공하는 광고 무료 플레이 앱에서 수익을 창출하는 데 사용됩니다.