SDK 초기화

이 페이지에서는 GMA Next-Gen SDK를 초기화하는 방법을 설명합니다.

시작하기 전에

GMA Next-Gen SDK를 사용하려면 미디에이션 없이 통합하거나 Ad Manager를 미디에이션 플랫폼으로 사용해야 합니다. 다른 미디에이션 플랫폼은 GMA Next-Gen SDK과 호환되지 않습니다.

GMA Next-Gen SDK용 빌드 구성

다음 섹션에서는 GMA Next-Gen SDK를 구성하는 데 필요한 단계를 보여줍니다.

GMA Next-Gen SDK 종속 항목 포함

GMA Next-Gen SDK에는 다른 Gradle 종속 항목이 필요합니다. 앱 수준 빌드 파일에서 현재 모바일 광고 SDK 종속 항목에 대한 참조를 삭제하고 새 아티팩트를 포함합니다.

Gradle 종속 항목
현재

Kotlin

dependencies {
  // ...
  implementation("com.google.android.gms:play-services-ads:24.9.0")
}

Groovy

dependencies {
  // ...
  implementation 'com.google.android.gms:play-services-ads:24.9.0'
}
GMA Next-Gen SDK

Kotlin

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation("com.google.android.gms:play-services-ads:24.9.0")
  implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:0.22.0-beta04")
}

Groovy

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation 'com.google.android.gms:play-services-ads:24.9.0'
  implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:0.22.0-beta04'
}

미디에이션 통합에서 com.google.android.gms 모듈 제외

미디에이션 어댑터는 계속해서 현재 모바일 광고 SDK에 종속됩니다. 하지만 GMA Next-Gen SDK에는 미디에이션 어댑터에 필요한 모든 클래스가 포함됩니다. 중복된 심볼과 관련된 컴파일 오류를 방지하려면 중재 어댑터가 종속 항목으로 가져오지 않도록 현재 모바일 광고 SDK를 제외해야 합니다.

앱 수준 빌드 파일에서 모든 종속 항목에서 play-services-adsplay-services-ads-lite 모듈을 전역적으로 제외합니다.

Kotlin

configurations.configureEach {
    exclude(group = "com.google.android.gms", module = "play-services-ads")
    exclude(group = "com.google.android.gms", module = "play-services-ads-lite")
}

Groovy

configurations.configureEach {
    exclude group: "com.google.android.gms", module: "play-services-ads"
    exclude group: "com.google.android.gms", module: "play-services-ads-lite"
}

최소 및 컴파일 Android API 수준 설정

GMA Next-Gen SDK에는 최소 Android API 수준 24와 컴파일 Android API 수준 34가 필요합니다. 앱 수준 빌드 파일에서 minSdkcompileSdk 값을 각각 24 이상 및 34 이상으로 조정합니다.

GMA Next-Gen SDK 초기화

GMA Next-Gen SDK는 광고를 로드하기 전에 초기화해야 합니다. 초기화가 선택사항이지만 권장되는 현재 모바일 광고 SDK와는 다릅니다. 이전에 광고를 로드하기 전에 SDK를 초기화하지 않았다면 코드를 업데이트합니다.

이 섹션에서는 현재 버전과 GMA Next-Gen SDK 간의 SDK 초기화 구현 차이점을 설명합니다.

Ad Manager 앱 ID 설정

다음 예에서는 현재 및 GMA Next-Gen SDK에서 Ad Manager 앱 ID를 설정합니다.

현재

통합에는 앱의 AndroidManifest.xml 파일 내에 Ad Manager 앱 ID가 포함된 android:name="com.google.android.gms.ads.APPLICATION_ID"이 있는 <meta-data> 태그가 필요합니다.

<manifest>
  <application>
    <!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713 -->
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="SAMPLE_APP_ID"/>
  </application>
</manifest>
GMA Next-Gen SDK

SDK 초기화의 일부로 Ad Manager 앱 ID를 프로그래매틱 방식으로 제공합니다.

Kotlin

// Initialize the Google Mobile Ads SDK.
val initConfig = InitializationConfig.Builder("SAMPLE_APP_ID").build()
MobileAds.initialize(this@MainActivity, initConfig) {}

자바

// Initialize GMA Next-Gen SDK.
InitializationConfig initConfig =
    new InitializationConfig.Builder("SAMPLE_APP_ID").build();
MobileAds.initialize(this, initConfig, initializationStatus -> {});

구현 변경사항 검토

다음 예에서는 current와 GMA Next-Gen SDK를 초기화합니다.

현재

MobileAds.initialize()를 호출하여 Google 모바일 광고 SDK를 초기화합니다. 백그라운드 스레드에서 초기화하면 ANR을 줄일 수 있습니다.

Kotlin

import com.google.android.gms.ads.MobileAds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize the Google Mobile Ads SDK on a background thread.
      MobileAds.initialize(this@MainActivity) {}
    }
  }
}

자바

import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize the Google Mobile Ads SDK on a background thread.
              MobileAds.initialize(this, initializationStatus -> {});
            })
        .start();
  }
}
GMA Next-Gen SDK

GMA Next-Gen SDK을 초기화하려면 MobileAds.initialize()을 호출합니다. 백그라운드 스레드에서 호출해야 하며, 그렇지 않으면 '애플리케이션 응답 없음' (ANR) 오류가 발생할 수 있습니다.

Kotlin

import com.google.android.libraries.ads.mobile.sdk.MobileAds
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize GMA Next-Gen SDK on a background thread.
      MobileAds.initialize(
        this@MainActivity,
        // Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713
        InitializationConfig.Builder("SAMPLE_APP_ID").build()
      ) {
        // Adapter initialization is complete.
      }
      // Other methods on MobileAds can now be called.
    }
  }
}

Java

import com.google.android.libraries.ads.mobile.sdk.MobileAds;
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize GMA Next-Gen SDK on a background thread.
              MobileAds.initialize(
                  this,
                  // Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    // Adapter initialization is complete.
                  });
              // Other methods on MobileAds can now be called.
            })
        .start();
  }
}