C++ 프로젝트에서 AdMob 시작하기

이 빠른 시작 가이드는 AdMob을 사용하여 Firebase로 개발된 앱을 수익화하려는 게시자와 개발자를 대상으로 합니다. 앱에 Firebase를 포함할 계획이 없다면 독립형 AdMob 가이드를 참조하세요.

아직 AdMob, Firebase, Google 애널리틱스를 함께 사용해 보지 않았다면 이렇게 사용할 때의 이점을 알아보세요.

이 가이드를 처음으로 진행하는 경우 우선 Google 모바일 광고 C++ SDK 테스트 앱을 다운로드하여 따라 해 보는 것이 좋습니다.

시작하기 전에

  • Firebase 프로젝트와 Firebase 앱이 아직 없다면 Firebase 시작 가이드의 C++ 프로젝트에 Firebase 추가를 따릅니다.

  • Firebase 프로젝트에서 Google 애널리틱스가 사용 설정되어 있는지 확인합니다.

    • 새 Firebase 프로젝트를 만드는 경우 프로젝트 생성 워크플로 중에 Google 애널리틱스를 사용 설정합니다.

    • 기존 Firebase 프로젝트가 있지만 Google 애널리틱스를 사용 설정하지 않은 경우 > 프로젝트 설정통합 탭에서 Google 애널리틱스를 사용 설정할 수 있습니다.

1단계: AdMob 계정에서 앱 설정

  1. 앱의 각 플랫폼 변형을 AdMob 앱으로 등록합니다.

    1. AdMob 계정에 로그인하거나 가입합니다.

    2. AdMob에 앱의 각 플랫폼 변형을 등록합니다. 이 단계에서는 고유한 AdMob 앱 ID로 AdMob 앱을 만들며 이 ID는 이 가이드의 뒷부분에서 필요합니다.

    앱에 모바일 광고 SDK를 추가하라는 메시지가 표시됩니다. 이 가이드의 뒷부분에서 이 작업에 대한 자세한 안내를 확인하세요.

  2. 각 AdMob 앱을 해당 Firebase 앱에 연결합니다.

    이 단계는 선택사항이지만 적극 권장됩니다. 사용자 측정항목을 사용 설정하고 AdMob 앱을 Firebase에 연결할 때의 이점을 자세히 알아보세요.

    AdMob 계정의 대시보드에서 각 플랫폼 변형별로 다음 두 단계를 완료합니다.

    1. AdMob이 AdMob 계정에서 선별된 분석 데이터를 처리하고 표시할 수 있도록 사용자 측정항목을 사용 설정합니다. 이 설정은 AdMob 앱을 Firebase에 연결하는 데도 필요합니다.

    2. 기존 Firebase 프로젝트 및 해당 Firebase 앱에 AdMob 앱을 연결합니다.

      Firebase 앱에 입력한 것과 동일한 패키지 이름(Android) 또는 번들 ID(iOS)를 입력해야 합니다. Firebase 앱의 패키지 이름 또는 번들 ID는 > 프로젝트 설정내 앱 카드에서 확인할 수 있습니다.

2단계: 앱에 AdMob 앱 ID 추가

Android

아래와 같이 <meta-data> 태그를 추가하는 방법으로 AdMob 앱 ID를 앱의 AndroidManifest.xml 파일에 추가합니다.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

앱의 Info.plist 파일에서 AdMob 앱 ID의 문자열 값이 포함된 GADApplicationIdentifier 키를 추가합니다.

프로그래매틱 방식으로 다음과 같이 변경할 수 있습니다.

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

또는 속성 목록 편집기에서 다음과 같이 수정할 수 있습니다.

속성 목록 편집기

3단계: Google 모바일 광고 SDK 추가

Google 모바일 광고 C++ SDK는 firebase::gma 네임스페이스에 있으므로 Firebase C++ SDK를 다운로드한 후 원하는 디렉터리에 압축을 풉니다.

Firebase C++ SDK는 플랫폼별로 제공되지 않지만 플랫폼별 라이브러리 구성이 필요합니다.

Android

  1. 프로젝트의 gradle.properties 파일에서 압축을 푼 SDK의 위치를 지정합니다.

    systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
  2. 프로젝트의 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"
  3. 모듈(앱 수준) 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
    }
  4. 프로젝트의 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}")
  5. 앱을 동기화하여 모든 종속 항목에 필요한 버전이 있는지 확인합니다.

다 되었습니다. Google 모바일 광고 C++ SDK를 사용하기 위한 C++ 앱 구성 작업을 마쳤습니다.

iOS

이 섹션의 단계는 Google 모바일 광고 C++ SDK를 iOS 프로젝트에 추가하는 방법의 예시입니다.

  1. 다음을 실행하여 CocoaPods 버전 1 이상을 가져옵니다.

    sudo gem install cocoapods --pre
  2. 압축을 푼 SDK에서 Google 모바일 광고 포드를 추가합니다.

    1. Podfile이 없으면 만듭니다.

      cd YOUR_APP_DIRECTORY
      pod init
    2. Podfile에 Google 모바일 광고 C++ SDK용 포드를 추가합니다.

      pod 'Google-Mobile-Ads-SDK'
    3. 포드를 설치하고 Xcode에서 .xcworkspace 파일을 엽니다.

      pod install
      open YOUR_APP.xcworkspace
    4. Firebase C++ SDK에서 다음 프레임워크를 프로젝트에 추가합니다.

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

다 되었습니다. Google 모바일 광고 C++ SDK를 사용하기 위한 C++ 앱 구성 작업을 마쳤습니다.

4단계: Google 모바일 광고 SDK 초기화

광고를 로드하기 전에 firebase::gma::Initialize()를 호출하여 모바일 광고 SDK를 초기화합니다.

이 호출은 초기화가 완료되거나 30초의 제한 시간이 지나면 완료되는 firebase::Future를 반환합니다. 이 메서드는 한 번만 호출하면 되지만 최대한 빨리, 가급적이면 앱 실행 시 호출하는 것이 가장 좋습니다.

다음은 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가 생성되고 반환됩니다. 그러면 앱은 Futurestatus()를 폴링하여 초기화가 완료된 시점을 판단할 수 있습니다. 완료되면 앱에서 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.
  }
}

5단계: 앱에 구현할 광고 형식 선택

AdMob에서 제공하는 다양한 광고 형식 중 앱의 사용자 환경에 가장 적합한 형식을 선택할 수 있습니다. AdMob 문서에서 자세한 구현 안내를 보려면 광고 형식 버튼을 클릭하세요.

기기 화면의 상단이나 하단에 표시되는 직사각형 광고입니다.

배너 광고는 사용자가 앱과 상호작용하는 동안 화면에 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다. 모바일 광고를 처음 시작하는 경우 이 형식부터 이용해 보시기 바랍니다.

배너 광고 구현

전면 광고

사용자가 닫을 때까지 앱의 인터페이스를 완전히 덮는 전체 화면 광고입니다.

전면 광고는 게임의 레벨 사이나 작업 완료 직후와 같이 앱 실행의 흐름이 자연스럽게 멈추는 시점에 사용하는 것이 가장 적합합니다.

전면 광고 구현

보상형

짧은 동영상을 시청하거나 플레이어블 광고 또는 설문조사와 상호작용한 사용자에게 보상을 제공하는 광고 형식입니다.

보상형(또는 '보상 기반') 광고는 부분 유료화 사용자로부터 수익을 창출하는 데 도움이 됩니다.

보상형 광고 구현

관심 있는 다른 주제

사용자 측정항목 및 분석 데이터 보기

초기화 후 모바일 광고 SDK는 자동으로 앱에서 분석 이벤트사용자 속성의 로깅을 시작합니다. 앱에 코드를 추가하거나 광고를 구현하지 않고도 이 데이터를 볼 수 있습니다. 이 분석 데이터는 다음 위치에서 볼 수 있습니다.

ARPUARPPU 측정항목을 더 잘 나타내기 위해 이러한 측정항목에 대한 수익 계산에 ecommerce_purchase라는 애널리틱스 커스텀 이벤트의 데이터를 포함할 수도 있습니다(방법 알아보기).

(선택사항) Google 애널리틱스 및 Firebase의 더 많은 기능 사용

더 많은 기회와 기능을 활용하여 앱 수익 창출 및 사용자 참여도를 개선하세요.

  • Google 애널리틱스용 Firebase SDK 추가 및 사용

    자세한 내용은 AdMob 앱에서 Google 애널리틱스 및 Firebase 사용 가이드를 참조하세요.

  • 앱에서 다른 Firebase 제품 사용

    Google 애널리틱스용 Firebase SDK를 추가한 후 다른 Firebase 제품을 사용하여 앱의 광고를 최적화할 수 있습니다.

    • 원격 구성을 사용하면 앱 업데이트를 게시하지 않고도 일일 활성 사용자 수의 제한 없이 무료로 앱의 동작과 모양을 변경할 수 있습니다.

    • A/B 테스팅을 사용하면 앱 UI, 기능 또는 참여 캠페인의 변경사항을 테스트하여, 변경사항을 전반적으로 구현하기 전에 수익 및 유지율과 같은 주요 측정항목에 변경으로 인한 영향이 있는지 확인할 수 있습니다.