الانتقال إلى "الجيل التالي من SDK لإعلانات Google على الأجهزة الجوّالة"

تتناول هذه الصفحة تعليمات إعداد 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 ومستوى واجهة برمجة تطبيقات Android الذي يتم التجميع عليه

GMA Next-Gen SDK يتطلّب الحدّ الأدنى لمستوى واجهة برمجة تطبيقات Android 24 و مستوى واجهة برمجة تطبيقات Android الذي يتم التجميع عليه 34. عليك تعديل القيمتَين minSdk وcompileSdk في ملف الإصدار على مستوى التطبيق إلى 24 أو أعلى و34 أو أعلى على التوالي.

إعداد GMA Next-Gen SDK

GMA Next-Gen SDK يتطلّب الإعداد قبل تحميل الإعلانات، وهذا يختلف عن Google Mobile Ads SDK (Legacy) الذي يكون فيه الإعداد اختياريًا ولكن يُنصح به. عليك تعديل الرمز إذا لم يسبق لك إعداد حزمة SDK قبل تحميل الإعلانات.

يتناول هذا القسم الاختلافات في عملية إعداد حزمة SDK بين 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 برمجيًا كجزء من عملية إعداد حزمة 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 -> {});

مراجعة التغييرات في عملية الإعداد

تُعدّ الأمثلة التالية Google Mobile Ads SDK (Legacy) وGMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

عليك استدعاء MobileAds.initialize() لإعداد "SDK لإعلانات Google على الأجهزة الجوّالة". يُنصح بالإعداد على سلسلة محادثات في الخلفية للحدّ من أخطاء "التطبيق لا يستجيب".

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();
  }
}
GMA Next-Gen SDK

عليك استدعاء MobileAds.initialize() لإعداد GMA Next-Gen SDK. يجب استدعاء هذه الطريقة على سلسلة تعليمات في الخلفية، وإذا لم يتم ذلك، قد يحدث خطأ "التطبيق لا يستجيب" (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.
    }
  }
}

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