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


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

자세히 알아보려면 이점, AdMob, Firebase 및 Google Analytics을(를) 함께 사용합니다.

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

시작하기 전에

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

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

    • 새 Firebase 프로젝트를 만드는 경우 Google Analytics를 사용 설정합니다. 프로젝트 생성 워크플로에서 작성할 수 있습니다

    • 기존 Firebase 프로젝트가 있고 Google Analytics이(가) 사용 설정된 경우 다음에서 Google Analytics을(를) 사용 설정할 수 있습니다. 통합 > 탭 프로젝트 설정.

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

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

    1. 로그인 또는 가입하고 AdMob 계정.

    2. 앱의 각 플랫폼 변형을 AdMob 이 단계에서 고유한 AdMob를 갖는 AdMob 앱을 만듭니다. 앱 ID 이 가이드의 후반부에서 사용할 수 있습니다

    앱에 Mobile Ads SDK를 추가하라는 메시지가 표시됩니다. Find(찾기) 이 작업에 대한 자세한 안내는 본 가이드의 후반부에서 확인하세요.

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

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

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

    1. 사용 설정 사용자 측정항목 AdMob이(가) BigQuery에서 선별된 분석 데이터를 처리하고 AdMob 계정. 또한 AdMob 앱을 Firebase에 연결할 수 있습니다.

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

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

2단계: 앱에 AdMob 앱 ID 추가

Android

AdMob 앱 ID 다음과 같이 <meta-data> 태그를 추가하여 앱의 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 파일에 다음과 같이 GADApplicationIdentifier 키를 추가합니다. 문자열 값 AdMob 앱 ID.

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

<!-- 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 Mobile Ads 포드를 추가합니다.

    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 초기화

광고를 로드하기 전에 다음을 호출하여 Mobile Ads SDK를 초기화합니다. firebase::gma::Initialize()입니다.

이 호출은 초기화가 완료되거나 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 문서에서 자세한 구현 안내를 확인하세요.

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

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

배너 광고 구현

전면 광고

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

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

전면 광고 구현

보상형

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

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

보상형 광고 구현

관심 있는 다른 주제

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

초기화 후 Mobile Ads SDK가 자동으로 시작됩니다. 로깅 분석 이벤트사용자 속성 할 수 있습니다. 코드에 더 이상 코드를 추가하지 않고도 이 데이터를 볼 수 있습니다. 광고를 구현할 수 있습니다. 이 분석 데이터는 다음 위치에서 볼 수 있습니다.

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

(선택사항) Google Analytics 및 Firebase의 더 많은 기능 사용

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