الانتقال إلى "الجيل التالي من 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 ومستوى التجميع

يتطلّب 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) {}

جافا

// 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 على الأجهزة الجوّالة". ننصحك بإجراء عملية الإعداد على سلسلة محادثات في الخلفية للحدّ من أخطاء 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

استخدِم الأمر Call 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.
    }
  }
}

جافا

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