시작하기

<ph type="x-smartling-placeholder">


이 가이드는 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 앱으로 등록합니다.

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

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

Google 모바일 광고 C++ SDK 설치

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

Firebase C++ SDK는 플랫폼별로 제공되지 않지만 플랫폼별 라이브러리 구성을 생성할 수 있습니다.

Android

CMake를 사용하는 것이 좋지만 libfirebase_app.alibfirebase_gma.a를 앱에 연결하려면 일반 Firebase C++ SDK 시작 가이드에서 ndk-build에 대한 지침을 찾을 수 있습니다.

  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. 앱을 동기화하여 모든 종속 항목에 필요한 버전이 있는지 확인합니다.

iOS

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

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

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

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

      cd APP_DIRECTORY
      pod init
    2. 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'
      
    3. 포드를 설치하고 Xcode에서 .xcworkspace 파일을 엽니다.

      pod install
      open APP.xcworkspace
    4. 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가 생성되고 반환됩니다. 그러면 앱이 초기화가 완료된 시점을 결정하기 위한 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.
  }
}

광고 형식 선택

이제 Google 모바일 광고 C++ SDK를 가져왔으므로 있습니다. AdMob에서는 다양한 광고 형식이 제공되므로 한 가지 형식을 선택할 수 있습니다. 최적의 방법을 찾을 수 있습니다.

기기 화면의 상단이나 하단에 표시되는 직사각형 광고입니다. 배너 광고는 사용자가 앱과 상호작용하는 동안 화면에 표시되며 일정 시간이 지나면 자동으로 새로고침될 수 있습니다. 모바일 광고를 처음 시작하는 경우 배너 광고를 이용하는 것이 좋습니다.

배너 광고 구현

전면 광고

사용자가 닫을 때까지 앱의 인터페이스를 완전히 덮는 전체 화면 광고입니다. 다음과 같이 앱 실행 흐름에서 자연스러운 일시중지 시점에 사용하는 것이 좋습니다. 게임 레벨 사이 또는 작업 완료 직후에 광고를 게재할 수 있습니다.

전면 광고 구현

리워드 제공됨

짧은 동영상을 시청하고 플레이어블 광고와 상호작용한 사용자에게 보상을 제공하는 광고 광고 및 설문조사 무료 플레이 앱 수익 창출에 사용됩니다.

보상형 광고 구현