初始化 SDK

本頁說明如何初始化 Google Mobile Ads SDK (Beta 版)。

事前準備

如要使用 Google Mobile Ads SDK (Beta 版),您必須整合但不使用中介服務,或是使用 AdMob 做為中介服務平台。其他中介服務平台與 Google Mobile Ads SDK (Beta 版) 不相容。

設定 Google Mobile Ads SDK (Beta 版) 的建構作業

以下各節說明設定 Google Mobile Ads SDK (Beta 版) 的必要步驟。

加入 Google Mobile Ads SDK (Beta 版) 依附元件

Google Mobile Ads SDK (Beta 版) 需要不同的 Gradle 依附元件。在應用程式層級的建構檔中,移除對目前 Mobile Ads SDK 依附元件的參照,並加入新的構件。

Gradle 依附元件
目前

Kotlin

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

Groovy

dependencies {
  // ...
  implementation 'com.google.android.gms:play-services-ads:24.7.0'
}
Google Mobile Ads SDK (Beta 版)

Kotlin

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

Groovy

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation 'com.google.android.gms:play-services-ads:24.7.0'
  implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:0.21.0-beta01'
}

在中介服務整合中排除 com.google.android.gms 模組

中介服務轉接程式仍會依附目前的 Mobile Ads SDK。不過,Google Mobile Ads SDK (Beta 版) 包含中介服務轉接程式所需的所有類別。為避免發生與重複符號相關的編譯錯誤,您需要排除中介服務轉接程式做為依附元件提取的現有 Mobile Ads SDK。

在應用程式層級的建構檔案中,從所有依附元件全域排除 play-services-adsplay-services-ads-lite 模組。

Kotlin

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

Groovy

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

設定最低和編譯 Android API 級別

Google Mobile Ads SDK (Beta 版) 至少需要 Android API 級別 24,且編譯 Android API 級別為 34。將應用程式層級建構檔案中的 minSdkcompileSdk 值分別調整為 24 以上和 34 以上。

初始化 Google Mobile Ads SDK (Beta 版)

Google Mobile Ads SDK (Beta 版) 必須先初始化,才能載入廣告。目前的 Mobile Ads SDK 則可選擇是否初始化,但建議初始化。如果您先前未在載入廣告前初始化 SDK,請更新程式碼。

本節說明目前 SDK 與 Google Mobile Ads SDK (Beta 版) 的 SDK 初始化實作差異。

設定 AdMob 應用程式 ID

下列範例會在目前和 Google Mobile Ads SDK (Beta 版) 中設定 AdMob 應用程式 ID:

目前

整合時,您需要在應用程式的 AndroidManifest.xml 檔案中,加入含有 AdMob 應用程式 ID 的 <meta-data> 標記。android:name="com.google.android.gms.ads.APPLICATION_ID"

<manifest>
  <application>
    <!-- Sample AdMob 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>
Google Mobile Ads SDK (Beta 版)

以程式輔助方式提供 AdMob 應用程式 ID,做為 SDK 初始化作業的一部分。

Kotlin

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

Java

// Initialize Google Mobile Ads SDK (beta).
InitializationConfig initConfig =
    new InitializationConfig.Builder("SAMPLE_APP_ID").build();
MobileAds.initialize(this, initConfig, initializationStatus -> {});

查看導入變更

下列範例會初始化目前和 Google Mobile Ads SDK (Beta 版):

目前

呼叫 MobileAds.initialize() 初始化 Google Mobile Ads 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) {}
    }
  }
}

Java

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();
  }
}
Google Mobile Ads SDK (Beta 版)

呼叫 MobileAds.initialize() 初始化 Google Mobile Ads SDK (Beta)。這項作業必須在背景執行緒中呼叫,否則可能會導致「應用程式無回應」(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 Google Mobile Ads SDK (beta) on a background thread.
      MobileAds.initialize(
        this@MainActivity,
        // Sample AdMob 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 Google Mobile Ads SDK (beta) on a background thread.
              MobileAds.initialize(
                  this,
                  // Sample AdMob 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();
  }
}