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

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

قبل‌از شروع

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

اگر ازطریق پلاتفرم واسطه‌گری طرف سوم ادغام می‌کنید، با شریک واسطه‌گری خودتان بررسی کنید که آیا با 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 API

‫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 را پوشش می‌دهد.

تنظیم شناسه برنامه Ad Manager

مثال‌های زیر شناسه برنامه Ad Manager را در 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" حاوی شناسه برنامه Ad Manager شما در فایل AndroidManifest.xml برنامه شما نیاز دارد.

<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

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

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 Ad Manager 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 Ad Manager 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();
  }
}