本頁面說明如何初始化 GMA Next Gen SDK。
事前準備
如要使用 GMA Next Gen SDK,您必須整合但不使用中介服務,或是將 AdMob 做為中介服務平台。其他中介服務平台與 GMA Next Gen SDK 不相容。
為 GMA Next Gen SDK 設定建構作業
以下各節將說明設定 GMA Next Gen SDK 的必要步驟。
加入 GMA Next Gen SDK 依附元件
GMA Next Gen SDK 需要不同的 Gradle 依附元件。在應用程式層級的建構檔中,移除對目前 Mobile Ads SDK 依附元件的參照,並加入新的構件。
| Gradle 依附元件 | |
|---|---|
| 目前 |
Kotlindependencies { // ... implementation("com.google.android.gms:play-services-ads:24.7.0") } Groovydependencies { // ... implementation 'com.google.android.gms:play-services-ads:24.7.0' } |
| GMA Next Gen SDK |
Kotlindependencies { // ... // 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") } Groovydependencies { // ... // 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。不過,GMA Next Gen SDK 包含中介服務轉接程式所需的所有類別。為避免發生與重複符號相關的編譯錯誤,您需要排除中介服務轉接程式做為依附元件提取的現有 Mobile Ads SDK。
在應用程式層級的建構檔案中,從所有依附元件全域排除 play-services-ads 和 play-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 級別
GMA Next Gen SDK 需要的最低 Android API 級別為 24,編譯 Android API 級別為 34。將應用程式層級建構檔案中的 minSdk 和 compileSdk 值分別調整為 24 以上和 34 以上。
初始化 GMA Next Gen SDK
載入廣告前,必須先初始化 GMA 新一代 SDK。目前 Mobile Ads SDK 則可選擇是否初始化,但建議初始化。如果您先前未在載入廣告前初始化 SDK,請更新程式碼。
本節說明目前 SDK 和 GMA Next Gen SDK 在 SDK 初始化導入方面的差異。
設定 AdMob 應用程式 ID
下列範例會在目前和 GMA Next Gen SDK 中設定 AdMob 應用程式 ID:
| 目前 |
整合時,您需要在應用程式的 AndroidManifest.xml 檔案中,加入含有 AdMob 應用程式 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> |
| GMA Next Gen SDK |
以程式輔助方式提供 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 GMA Next Gen SDK. InitializationConfig initConfig = new InitializationConfig.Builder("SAMPLE_APP_ID").build(); MobileAds.initialize(this, initConfig, initializationStatus -> {}); |
查看導入變更
下列範例會初始化目前和 GMA Next Gen SDK:
| 目前 |
呼叫 Kotlinimport 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) {} } } } Javaimport 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 |
呼叫
Kotlinimport 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 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. } } } Javaimport 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 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(); } } |