이 가이드는 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, Google User Messaging Platform SDK, 최소 Firebase Core SDK(GMA C++ SDK에 필요)용 포드를 추가합니다.
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
포드를 설치하고 Xcode에서
.xcworkspace
파일을 엽니다.pod install
open APP.xcworkspace
Firebase C++ SDK에서 다음 프레임워크를 프로젝트에 추가합니다.
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
완료되었습니다. C++ 앱이 Google 모바일 광고 C++ SDK를 사용하도록 구성된 경우 바로 연결할 수 있습니다.
앱의 AdMob 앱 ID 구성
Android
모바일 광고 SDK에 설명된 대로 앱 구성의 3단계를 안내합니다. Android 가이드 그런 다음 이 페이지로 돌아옵니다
iOS
모바일 광고 SDK에 설명된 대로 Info.plist 업데이트 단계를 따릅니다. iOS 가이드를 완료한 다음 이 페이지에 추가합니다.
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 모바일 초기화 전 firebase::gma::SetRequestConfiguration()
광고 C++ SDK 자세한 내용은
타겟팅 가이드를 참조하세요.
다음은 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에서는 다양한 광고 형식이 제공되므로 한 가지 형식을 선택할 수 있습니다. 최적의 방법을 찾을 수 있습니다.
배너
기기 화면의 상단이나 하단에 표시되는 직사각형 광고입니다. 배너 광고는 사용자가 앱과 상호작용하는 동안 화면에 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다. 모바일 광고를 처음 시작하는 경우 배너 광고를 이용하는 것이 좋습니다.
전면 광고
사용자가 닫을 때까지 앱의 인터페이스를 완전히 덮는 전체 화면 광고입니다. 다음과 같이 앱 실행 흐름에서 자연스러운 일시중지 시점에 사용하는 것이 좋습니다. 게임 레벨 사이 또는 작업 완료 직후에 광고를 게재할 수 있습니다.
리워드 제공됨
짧은 동영상을 시청하고 플레이어블 광고와 상호작용한 사용자에게 보상을 제공하는 광고 광고 및 설문조사 무료 플레이 앱 수익 창출에 사용됩니다.