انتقال به کیت توسعه نرم‌افزار نسل بعدی GMA

این صفحه شامل دستورالعمل‌های مقداردهی اولیه GMA Next-Gen SDK است.

قبل‌از شروع

این راهنما برای ناشران و پلاتفرم‌های طرف سومی است که GMA Next-Gen SDK را مستقیماً ادغام می‌کنند.

اگر ازطریق پلاتفرم میانجی شخص ثالثی که از پیشنهاد قیمت شریک پشتیبانی می‌کند به AdMob متصل می‌شوید، جدول زیر را بررسی کنید تا سازگاری آن پلاتفرم با GMA Next-Gen SDK را تأیید کنید.

پلاتفرم میانجی‌گری سازگار با GMA Next-Gen SDK
AdMost
AppLovin MAX
Chartboost Mediation
DT Fairbid
Gravite
Nimbus
TopOn
TradPlus VisiM
Unity LevelPlay

اگر می‌خواهید از پلاتفرم میانجی‌گری‌ای استفاده کنید که با GMA Next-Gen SDK سازگار نیست، با پلاتفرم میانجی‌گری‌تان تماس بگیرید و درخواست پشتیبانی کنید.

پیکربندی ساخت برای GMA Next-Gen SDK

بخش‌های زیر مراحل لازم برای پیکربندی GMA Next-Gen SDK را نشان می‌دهد.

افزودن وابستگی GMA Next-Gen SDK

GMA Next-Gen SDK به وابستگی Gradle دیگری نیاز دارد. در فایل ساخت سطح برنامه، ارجاع به وابستگی Google Mobile Ads SDK (Legacy) را بردارید و آرتیفکت جدید را اضافه کنید.

وابستگی‌های Gradle
Google Mobile Ads SDK (Legacy)

Kotlin

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

Groovy

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

Kotlin

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

Groovy

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

مستثنی کردن پیمانه‌های com.google.android.gms در یکپارچه‌سازی‌های میانجی‌گری

آداپتورهای میانجی همچنان به Google Mobile Ads SDK (Legacy) وابسته هستند. بااین‌حال، GMA Next-Gen SDK شامل همه کلاس‌های موردنیاز آداپتورهای واسطه‌گری است. برای جلوگیری از خطاهای کامپایل مربوط به نمادهای تکراری، باید Google Mobile Ads SDK (Legacy) را از اینکه به‌عنوان وابستگی توسط آداپتورهای میانجی کشیده شود مستثنی کنید.

در فایل ساخت سطح برنامه، هر دو واحد play-services-ads و play-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 و کامپایل کردن آن

‫GMA Next-Gen SDK به حداقل سطح میانای برنامه‌سازی کاربردی Android‏ ۲۴ و سطح میانای برنامه‌سازی کاربردی Android‏ ۳۴ برای کامپایل نیاز دارد. مقادیر minSdk و compileSdk را در فایل ساخت سطح برنامه به‌ترتیب به ۲۴ یا بالاتر و ۳۴ یا بالاتر تغییر دهید.

مقداردهی اولیه GMA Next-Gen SDK

‫GMA Next-Gen SDK قبل‌از بار کردن آگهی‌ها به مقداردهی اولیه نیاز دارد، تغییری از Google Mobile Ads SDK (Legacy) که در آن مقداردهی اولیه اختیاری اما توصیه می‌شود. اگر قبلاً کیت توسعه نرم‌افزار را قبل‌از بار کردن آگهی‌ها مقداردهی اولیه نمی‌کردید، کدتان را به‌روز کنید.

این بخش تفاوت‌های پیاده‌سازی مقداردهی اولیه کیت توسعه نرم‌افزار بین Google Mobile Ads SDK (Legacy) و GMA Next-Gen SDK را پوشش می‌دهد.

تنظیم شناسه برنامه AdMob

مثال‌های زیر شناسه برنامه AdMob را در Google Mobile Ads SDK (Legacy) و GMA Next-Gen SDK تنظیم می‌کنند:

Google Mobile Ads SDK (Legacy)

ادغام به برچسب <meta-data> با android:name="com.google.android.gms.ads.APPLICATION_ID" حاوی شناسه برنامه AdMob شما در فایل 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="SAMPLE_APP_ID"/>
  </application>
</manifest>
GMA Next-Gen SDK

شناسه برنامه AdMob خود را به‌صورت برنامه‌نویسی‌شده به‌عنوان بخشی از مقداردهی اولیه کیت توسعه نرم‌افزار ارائه دهید.

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 -> {});

مرور تغییرات پیاده‌سازی

مثال‌های زیر Google Mobile Ads SDK (Legacy) و GMA Next-Gen SDK را مقداردهی اولیه می‌کنند:

Google Mobile Ads SDK (Legacy)

برای مقداردهی اولیه کیت توسعه نرم‌افزار تبلیغات تلفن همراه Google،‏ MobileAds.initialize() را فراخوانی کنید. برای کاهش خطاهای 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 AdMob app ID: ca-app-pub-3940256099942544~3347511713
        InitializationConfig.Builder("SAMPLE_APP_ID").build()
      ) {
        // Adapter initialization is complete.
      }
      // SDK initialization is complete. If you don't want to wait for bidding adapters to finish
      // initializing, start loading ads now.
    }
  }
}

جاوا

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 AdMob app ID: ca-app-pub-3940256099942544~3347511713
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    // Adapter initialization is complete.
                  });
              // SDK initialization is complete. If you don't want to wait for bidding adapters to
              // finish initializing, start loading ads now.
            })
        .start();
  }
}